为什么Json不要求Junit测试使用任何参数构造函数?

桑耶夫

我在使用Jackson来反序列化JSON字符串时遇到问题。我收到错误消息:com.fasterxml.jackson.databind.JsonMappingException:未找到类型[简单类型,类RatingDMO]的合适构造函数:无法从JSON对象实例化(需要添加/启用类型信息?)

我有映射到JSON文件的字段,并且它的参数可以作为属性使用,并且具有相同的类型。

注意:-如果我提供了no-arg构造函数(仅用于检查它是否有效),则Test可以工作。

由于模型中的最终字段很少,因此我无法在代码中提供/保留默认构造函数。

mapper.readValue(new File(“ ratingRequest.json”),RatingDMO.class);

JSON文件:-

{
    "company": "Test",
    "state": "NJ",
    "lob": "PA",
    "channel": "IA",
    "username": "GlobalBatchUser",
    "password": "GlobalBatchUser",
    "policyNumber": "Test",
    "policyKey": 7267,
    "transactionType": "Quote",
    "evaluationType": null,
    "clientID": null,
    "policyTerm": "6",
    "effectiveDate": "01/01/1980",
    "policyXML": null,
    "firstName": null,
    "lastName": null,
    "businessName": null,
    "city": null,
    "zip": null,
    "effectiveDtStart": "06/06/2013",
    "effectiveDtEnd": "06/06/2014",
    "searchType": "uw1",
    "uuid": null,
    "policyStatusCodes": [],
    "eAdvisorCoverages": {},
    "customCoverages": {},
    "defaultCoverages": {},
    "action": null,
    "type": null,
    "selectedCoverage": null,
    "motorClubMember": true,
    "selectedSubCoveres": null,
    "customRated": true,
    "policyDMO": {
    "policyKey": 0,
    "company": "HP",
    "state": "NJ",
    "lob": "auto",
    "channel": null,
    "addresses": [
        {
            "addressId": 0,
            "addrLine1Txt": "20 MARTIN RD",
            "addrLine2Txt": null,
            "addrLine3Txt": null,
            "addrLine4Txt": null,
            "cityName": "LIVINGSTON",
            "cityAliasName": null,
            "countyName": null,
            "countryCd": null,
            "districtCd": null,
            "houseNum": null,
            "poBoxInd": null,
            "stateCd": "NJ",
            "zip": "07039",
            "zipPlusFour": null,
            "addressType": "ADDRESS_RESIDENCE_KEY",
            "vehicleId": 0
        },
        {
            "addressId": 0,
            "addrLine1Txt": "20 MARTIN RD",
            "addrLine2Txt": null,
            "addrLine3Txt": null,
            "addrLine4Txt": null,
            "cityName": "LIVINGSTON",
            "cityAliasName": null,
            "countyName": null,
            "countryCd": null,
            "districtCd": null,
            "houseNum": null,
            "poBoxInd": null,
            "stateCd": "NJ",
            "zip": "07039",
            "zipPlusFour": null,
            "addressType": "ADDRESS_MAILING_KEY",
            "vehicleId": 0
        }
    ],
    "policyInfo": {
        "policyKey": 0,
        "mailingAddrID": 0,
        "priorAddrID": 0,
        "residentialAddrId": 0,
        "billingAddrId": 0,
        "employerAddrId": 0,
        "policyNum": "Test",
        "policyEffDt": 1371614400000,
        "policyExpDt": null,
        "companyCD": null,
        "stateCD": "NJ",
        "term": 0,
        "emailId": "[email protected]",
        "faxNum": null,
        "homePhoneNum": null,
        "workPhoneNum": null,
        "mailingAddrIsSameInd": "Y",
        "plfCD": "HIPT",
        "affinityCD": null,
        "motorClubInd": null,
        "homeownerInd": null,
        "homeInsCarrierName": null,
        "empOrRetEduInstInd": null,
        "residenceInsTypeCD": null,
        "policyCancelledWithin3YRSIND": null,
        "declineEmailInd": null,
        "militaryServiceInd": null,
        "clueORDInd": null,
        "otherInsuranceBasicOrSpecialInd": null,
        "healthInsuranceCarrierName": null,
        "healthInsurancePolicyNumber": null,
        "transactionProgress": "1",
        "numOfAccidentInLoanedVehicle": null,
        "allInsuredInd": null,
        "medicareMediaidInd": null,
        "uwCompanyCd": null,
        "policyIssueNo": null,
        "associatedEduAffilatedOrgInd": null,
        "eDocumentsInd": null
    },
    "eligibility": [],
    "policyAgency": {
        "policyKey": 0,
        "branchID": null,
        "agencyID": null,
        "producerId": null,
        "agencyHierId": 23155,
        "agentLoginId": null,
        "userName": null,
        "userTypeCd": null,
        "emailAddressId": null,
        "referChannel": "Others"
    },
    "participants": [
        {
            "policyKey": 0,
            "participantId": 0,
            "firstName": "KHAGENDRA",
            "middleName": null,
            "lastName": "SIRIPURAPU",
            "suffix": null,
            "birthDate": null,
            "ssn": null,
            "fid": null,
            "gender": "",
            "licNum": null,
            "licStateCD": null,
            "maritalStatusCD": null,
            "relationshipToInsCD": "A",
            "businessName": null,
            "participantRole": "PRIMARY_INSURED"
        }
    ],
    "vehicles": [],
    "drivers": [
        {
            "driverId": 0,
            "firstName": "KHAGENDRA",
            "middleName": null,
            "lastName": "SIRIPURAPU",
            "licenseAtAge": 0,
            "licenseStatusCode": null,
            "defenseDriverCourseIndicator": null,
            "goodStudentIndicator": null,
            "driverTrainingIndicator": null,
            "awayAtSchoolIndicator": null,
            "incidents": null,
            "occupation": null,
            "insuredOnOther": null,
            "continuousCoverageIndicator": null,
            "priorLicenseNumber": null,
            "driverCourseDate": null,
            "driverCourseName": null,
            "firstLicenseNonUSA": null,
            "awayAtMilitaryIndicator": null,
            "sr22FilingIndicator": null,
            "otherPolicyCarrierName": null,
            "awayAtSchoolComment": null,
            "licenseOosPrior3YrsInd": "N",
            "licenseOosPrior3YearsStateCd": null,
            "advDriverTrainingDate": null,
            "defensiveDriverCourseDate": null,
            "otherPolicyTypeCode": null,
            "accidentPrvntCourseDate": null,
            "phoneNumber": null,
            "safetyPledgeInd": null,
            "accidents": null,
            "violations": null
        }
    ],
    "priorCarrier": {
        "priorBiLimits": null,
        "priorCarrName": null,
        "policyKey": 0,
        "continuousCoverageDesc": null,
        "lapsedReason": null,
        "numOfYearOfContinuousCoverage": null,
        "activeCurrentPoilcyInd": null
    },
    "discounts": null,
    "companionPolicy": null,
    "payment": null

},
    "allInsuredInd": "Y",
    "medicareMediaidInd": "Y",
    "driversGreaterthan65": true
}

POJO类别:

public class RatingDMO implements Serializable {

    private static final long serialVersionUID = -433016040176969496L;
    private String company;
    private String state;
    private String lob;
    private String channel;
    private String username;
    private String password;
    private String policyNumber;
    private long policyKey;
    private String transactionType;
    private String evaluationType;
    private String clientID;
    private String policyTerm;
    private String effectiveDate;
    private String policyXML;
    private String webXML;
    private String firstName;
    private String lastName;
    private String businessName;
    private String city;
    private String zip;
    private String effectiveDtStart;
    private String effectiveDtEnd;
    private String searchType;
    private String uuid;
    private List<String> policyStatusCodes;
    private Map<String,String> eAdvisorCoverages;
    private Map<String,String> customCoverages;
    private Map<String,String> defaultCoverages;
    private String action;
    private String type;
    private String selectedCoverage;
    private boolean motorClubMember;
    private String selectedSubCoveres;
    private boolean customRated;
    private final PolicyDMO policyDMO;
    private final String allInsuredInd;
    private final String medicareMediaidInd;
    private final boolean driversGreaterthan65;

    public PolicyRatingRequestDMO(PolicyDMO policyDMO, String allInsuredInd, String medicareMediaidInd, boolean driversGreaterthan65){
        this.policyDMO = policyDMO;
        this.allInsuredInd = allInsuredInd;
        this.medicareMediaidInd = medicareMediaidInd;
        this.driversGreaterthan65 = driversGreaterthan65;
    }
... }
伊恩·罗伯茨

默认情况下,Jackson的数据绑定将尝试使用无参数构造函数构造一个对象,然后从JSON的相应位填充该对象的属性。您可以使用注释覆盖此行为

@JsonCreator
public PolicyRatingRequestDMO(@JsonProperty("policyInfo") PolicyDMO policyDMO,
         @JsonProperty("allInsuredInd") String allInsuredInd,
         @JsonProperty("medicareMediaidInd") String medicareMediaidInd,
         @JsonProperty("driversGreaterThan65") boolean driversGreaterthan65){
    this.policyDMO = policyDMO;
    this.allInsuredInd = allInsuredInd;
    this.medicareMediaidInd = medicareMediaidInd;
    this.driversGreaterthan65 = driversGreaterthan65;
}

JsonCreator批注告诉Jackson调用哪个构造函数,并为其注释参数,JsonProperty以指示JSON中的哪些属性对应于构造函数中的哪些参数。JSON中与构造函数参数不对应的其他属性将通过setter或通常的直接字段访问方式注入。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JUNIT测试-为什么构造函数被两次调用

来自分类Dev

Swift构造函数为什么使用命名参数调用?

来自分类Dev

Swift构造函数为什么使用命名参数调用?

来自分类Dev

构造函数为什么不设置参数?

来自分类Dev

控制器的构造函数不要使用参数mvc

来自分类Dev

什么是在JUnit测试多个构造函数的正确方法?

来自分类Dev

为什么不能要求构造函数并立即将其与browserify一起使用?

来自分类Dev

为什么不能要求构造函数并立即将其与browserify一起使用?

来自分类Dev

如何在不要求参数函数可变的情况下测试元函数?

来自分类Dev

为什么采用迭代器的构造函数要求元素是EmplaceConstructible?

来自分类Dev

为什么要使用JUnit测试套件?

来自分类Dev

为什么Kotlin不允许在主构造函数中使用任何代码?

来自分类Dev

PhpStorm错误地认为Event构造函数不要包含任何参数

来自分类Dev

使用JUnit测试抽象类构造函数

来自分类Dev

Android PointF构造函数无法在JUnit测试中使用

来自分类Dev

如果琐碎的默认构造函数不执行任何操作,为什么不能使用malloc创建琐碎的可构造对象?

来自分类Dev

为什么要使用move构造函数?

来自分类Dev

为什么要使用 list() 构造函数?

来自分类Dev

为什么在使用Activator.CreateInstance时需要定义无参数构造函数?

来自分类Dev

为什么不使用私有的无参数构造函数?

来自分类Dev

在Haskell中派生读取:为什么必须使用构造函数的参数名称?

来自分类Dev

为什么Java Swing中的JTable使用Vector作为构造函数参数?

来自分类Dev

为什么我不能使用参数调用基本构造函数方法?

来自分类Dev

为什么我不能在类中使用参数构造函数?

来自分类Dev

为什么在C ++中我无法使用参数化构造函数声明动态对象数组?

来自分类Dev

为什么在使用Activator.CreateInstance时需要定义无参数构造函数?

来自分类Dev

使用模板构造函数时,模板参数推导/替换失败,为什么?

来自分类Dev

为什么我不能使用参数调用基本构造函数方法?

来自分类Dev

为什么在参数[java]中以数组为参数的构造函数先于Object的构造函数?

Related 相关文章

  1. 1

    JUNIT测试-为什么构造函数被两次调用

  2. 2

    Swift构造函数为什么使用命名参数调用?

  3. 3

    Swift构造函数为什么使用命名参数调用?

  4. 4

    构造函数为什么不设置参数?

  5. 5

    控制器的构造函数不要使用参数mvc

  6. 6

    什么是在JUnit测试多个构造函数的正确方法?

  7. 7

    为什么不能要求构造函数并立即将其与browserify一起使用?

  8. 8

    为什么不能要求构造函数并立即将其与browserify一起使用?

  9. 9

    如何在不要求参数函数可变的情况下测试元函数?

  10. 10

    为什么采用迭代器的构造函数要求元素是EmplaceConstructible?

  11. 11

    为什么要使用JUnit测试套件?

  12. 12

    为什么Kotlin不允许在主构造函数中使用任何代码?

  13. 13

    PhpStorm错误地认为Event构造函数不要包含任何参数

  14. 14

    使用JUnit测试抽象类构造函数

  15. 15

    Android PointF构造函数无法在JUnit测试中使用

  16. 16

    如果琐碎的默认构造函数不执行任何操作,为什么不能使用malloc创建琐碎的可构造对象?

  17. 17

    为什么要使用move构造函数?

  18. 18

    为什么要使用 list() 构造函数?

  19. 19

    为什么在使用Activator.CreateInstance时需要定义无参数构造函数?

  20. 20

    为什么不使用私有的无参数构造函数?

  21. 21

    在Haskell中派生读取:为什么必须使用构造函数的参数名称?

  22. 22

    为什么Java Swing中的JTable使用Vector作为构造函数参数?

  23. 23

    为什么我不能使用参数调用基本构造函数方法?

  24. 24

    为什么我不能在类中使用参数构造函数?

  25. 25

    为什么在C ++中我无法使用参数化构造函数声明动态对象数组?

  26. 26

    为什么在使用Activator.CreateInstance时需要定义无参数构造函数?

  27. 27

    使用模板构造函数时,模板参数推导/替换失败,为什么?

  28. 28

    为什么我不能使用参数调用基本构造函数方法?

  29. 29

    为什么在参数[java]中以数组为参数的构造函数先于Object的构造函数?

热门标签

归档