簡體   English   中英

Orika Object 映射器未映射列表

[英]Orika Object mapper not mapping Lists

我正在使用一個名為 Orika 的 object 映射器,我對它的工作原理有一些疑問,或者我在這里做錯了什么。

以下是課程

  1. https://googleapis.dev/java/google-cloud-channel/latest/com/google/cloud/channel/v1/Entitlement.html
    這是源代碼 class 結構,object 采用這種格式。

  2. 權利.java

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Entitlement {
    
    private String name;
    private String createTime;
    private String updateTime;
    private String offer;
    private String provisioningState;
    private ProvisionedService provisionedService;
    private String purchaseOrderId;
    private List<String> suspensionReasons;
    private CommitmentSettings commitmentSettings;
    private TrialSettings trialSettings;
    private AssociationInfo associationInfo;
    private List<Parameter> parameters;
}

參數.java

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Parameter {
    private String name;
    private Value value;
    private boolean editable;
}
  1. 我的 orika 映射器代碼:
public class OrikaMapper {
    private MapperFactory mapperFactory;
    public <S, D> D map(S s, Class<D> type) {
        return this.mapperFactory.getMapperFacade().map(s, type);
    }
}
  1. 我的方法:
public Entitlement getEntitlement(String credential, String customerId, String entitlementId) {
         CloudChannelServiceClient client = null;
         Entitlement resp = null;
        try {
            client = <<>>;
            String name = "accounts/"+ ACCOUNT_ID +"/customers/"+customerId+"/entitlements/"+entitlementId;
            GetEntitlementRequest request = GetEntitlementRequest.newBuilder().setName(name).build();
            com.google.cloud.channel.v1.Entitlement entitlement = client.getEntitlement(request);
            resp = orikaMapper.map(gson.toJson(entitlement), Entitlement.class);
        } catch (Exception e) {
            throw new ApplicationException("code", e.getMessage());
        }
        return resp;
      }
  1. 來自谷歌的示例響應 API
{ "name_": "<<>>", "createTime_": { "seconds_": 1615715413, "nanos_": 810000000, "memoizedIsInitialized": -1, "unknownFields": { "fields": {}, "fieldsDescending": {} }, "memoizedSize": -1, "memoizedHashCode": 0 }, "offer_": "<<>>", "provisioningState_": 5, "provisionedService_": { "provisioningId_": "<<>>", "productId_": "<<>>", "skuId_": "<<>>", "memoizedIsInitialized": -1, "unknownFields": { "fields": {}, "fieldsDescending": {} }, "memoizedSize": -1, "memoizedHashCode": 0 }, "suspensionReasons_": [ 4 ], "suspensionReasonsMemoizedSerializedSize": 0, "purchaseOrderId_": "A codelab test", "trialSettings_": { "trial_": false, "memoizedIsInitialized": -1, "unknownFields": { "fields": {}, "fieldsDescending": {} }, "memoizedSize": -1, "memoizedHashCode": 0 }, "parameters_": [ { "name_": "max_units", "value_": { "kindCase_": 1, "kind_": 4, "memoizedIsInitialized": -1, "unknownFields": { "fields": {}, "fieldsDescending": {} }, "memoizedSize": -1, "memoizedHashCode": 0 }, "editable_": true, "memoizedIsInitialized": -1, "unknownFields": { "fields": {}, "fieldsDescending": {} }, "memoizedSize": -1, "memoizedHashCode": 0 }, { "name_": "assigned_units", "value_": { "kindCase_": 1, "kind_": 1, "memoizedIsInitialized": -1, "unknownFields": { "fields": {}, "fieldsDescending": {} }, "memoizedSize": -1, "memoizedHashCode": 0 }, "editable_": false, "memoizedIsInitialized": -1, "unknownFields": { "fields": {}, "fieldsDescending": {} }, "memoizedSize": -1, "memoizedHashCode": 0 } ], "memoizedIsInitialized": -1, "unknownFields": { "fields": {}, "fieldsDescending": {} }, "memoizedSize": -1, "memoizedHashCode": 0 }
  1. 在 orika 中映射后的響應
{ "name": "<<>>", "createTime": "seconds: 1615715413\nnanos: 810000000\n", "updateTime": "", "offer": "<<>>", "provisioningState": "SUSPENDED", "provisionedService": { "provisioningId": "<<>>", "productId": "<<>>", "skuId": "<<>>" }, "purchaseOrderId": "A codelab test", "commitmentSettings": { "startTime": "", "endTime": "", "renewalSettings": { "enableRenewal": false, "resizeUnitCount": false, "paymentPlan": "PAYMENT_PLAN_UNSPECIFIED", "paymentCycle": { "duration": 0, "periodType": "PERIOD_TYPE_UNSPECIFIED" } } }, "trialSettings": { "trial": false, "endTime": "" }, "associationInfo": { "baseEntitlement": "" } }

我的問題是,響應無法響應 map List<> 字段中的內容。 所有其他字段都已映射。 我在這里錯過了什么。

回復相當晚,但如果這對將來的任何人有幫助的話。 我遇到了同樣的問題。 看來您必須明確調用: mapper.mapAsList 即在提問者的情況下: parameters = orikaMapper.mapAsList(entitlement.getParameters(), Parameter.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM