为什么 Json 要求 Junit 测试没有参数构造函数?

2024-02-05

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

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

注意:- 如果我提供无参数构造函数(仅用于检查它是否有效),则测试有效。

我无法在代码中提供/保留默认构造函数,因为模型中几乎没有最终字段。

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] /cdn-cgi/l/email-protection",
        "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;
}

The JsonCreator http://fasterxml.github.io/jackson-annotations/javadoc/2.4/com/fasterxml/jackson/annotation/JsonCreator.html注释告诉 Jackson 要调用哪个构造函数,其参数用注释JsonProperty http://fasterxml.github.io/jackson-annotations/javadoc/2.4/com/fasterxml/jackson/annotation/JsonProperty.html指示 JSON 中的哪些属性对应于构造函数中的哪些参数。 JSON 中与构造函数参数不对应的其他属性将照常通过 setter 或直接字段访问注入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Json 要求 Junit 测试没有参数构造函数? 的相关文章

  • Glassfish:在部署期间修改 EAR 的部署描述符

    经过几天的搜索 尝试和摇头 我将这个问题发布到 SO 尽管它seems已经得到答复 这是场景 我有一个 EAR 应用程序 目前 包含一个 WAR 和一个 EJB 模块 EJB 模块使用 JPA persistence xml 并且一些无状态
  • 初始堆大小无效。无法创建Java虚拟机

    我遇到了下一个问题 我尝试通过startup bat手动启动Tomcat 但似乎没有显示任何结果 然后我尝试运行shutdown bat 控制台显示如下 D apache tomcat 7 0 35 bin gt startup bat U
  • EL 通过 Scriptlet

    在 JSP 中使用 EL 相对于 scriptlet 的优势是什么 EL 被认为是无脚本语言 EL 使 JSP 免受容易出错原始 Java 代码并强制您根据 MVC 思想编写 JSP EL 或像 JSTL 这样的标签库 不可能实现的任何事情
  • 使用 Hibernate Dialect 设置表字符集/排序规则?

    我使用 Hibernate MySQLInnoDB Dialect 来生成 DDL hibernate cfg xml
  • Android 游戏偶尔出现延迟

    我正在用 Java 制作一个简单的 Android 游戏 我注意到每 20 40 秒就会出现一些烦人的延迟 首先 我认为它们是由垃圾收集器引起的 但当我检查 LogCat 时 我发现游戏滞后时没有垃圾收集 每当游戏开始滞后时 我都会标记日志
  • 为什么我要使用责任链而不是 switch 语句

    考虑一下您已经获得了多次验证 仅当要检查的对象属于某种类型时 这些验证才应生效 为什么我要使用责任链而不是 switch 语句 责任链示例 public class Executor Inject private ValidatorFact
  • 在 Java 中创建带注释的对象时收到通知

    Intent 我有一个自定义 Java 注释 DynamicField public class RESTEndpointInvoker DynamicField key httpTimeout private long httpTimeo
  • vm 参数中的 -D 是什么,它表示为什么我们必须在 vm 参数中始终指定 -D

    vm 参数中的 D 是什么 它表示为什么我们必须在 vm 参数中始终指定 D 有什么标准吗 如果是 那是什么以及指定的位置 D 设置当前运行的 java 程序可以访问的属性值 它允许程序员设置程序运行所需的值 但程序不知道这些值是什么 因此
  • 将压缩的json数据存储在本地存储中

    我想将 JSON 数据存储在本地存储中 有时存储的数据可能超过 5MB 每个域的浏览器允许的最大阈值 无论如何 我可以压缩或压缩数据并将其存储在本地存储中吗 如果对大数据进行每个 JS 函数的压缩和解压 会增加多少延迟 我正在使用这个 js
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 使用 Box2d(适用于 Android)进行碰撞检测?

    有人可以解释一下使用 box2d for android 进行碰撞检测的工作原理吗 我无法理解 BBContactListener 以什么方式工作 BBContactListener listener new BBContactListen
  • JFrame Glasspane 也优于 JDialog,但不应该

    我有一个带有 Glasspane 的 JFrame 未装饰 该框架打开一个 JDialog 也未装饰 也有一个 glassPane 并隐藏自身 setVisible false Glasspanes 通过 setGlassPane 设置 对
  • 获取包中声明的所有 Java 类的名称

    我正在编写一个功能 它将有助于将类放入我的程序的某个包中 另外 我只想要子类某个类的类 我需要这些类才能调用它们的静态方法 有没有一种自动的方法来做到这一点 如果是的话 速度慢吗 如果我不清楚 我想要的是这样的 ArrayList
  • 如何在Java中模拟引用传递?

    我是一个十足的 Java 菜鸟 我知道 Java 将所有参数视为按值传递 并且还有其他几个线程人们对此进行了解释 例如 在 C 中我可以这样做 void makeAThree int n n 3 int main int myInt 4 m
  • 如何列出hadoop hdfs中目录及其子目录中的所有文件

    我在 hdfs 中有一个文件夹 其中有两个子文件夹 每个子文件夹大约有 30 个子文件夹 最后 每个子文件夹都包含 xml 文件 我想列出所有 xml 文件 仅给出主文件夹的路径 在本地我可以这样做apache commons io 的 h
  • JSON.NET 使用 JObject、JToken 和 JArray 进行解析

    我有一个 json 字符串 我试图用 JSON net 解析它 我想循环并使用komponent大批 这是我的 json 字符串 Name Service jsonTEMPLATE komponent name aa name bb 这是我
  • Lucene/Hibernate 搜索锁定异常

    我使用 Hibernate Search 在 Web 应用程序上索引和全文搜索项目 没有问题 来自我的 pom xml
  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv
  • 如何创建具有同等时间元素的 JavaFX 转换?

    我正在尝试 JavaFX 和动画 尤其是PathTransition 我正在创建一个简单的程序 使球 弹跳 而不使用QuadCurveTo班级 到目前为止 这是我的代码 Ellipse ball new Ellipse 375 250 10
  • 在没有EOF的情况下停止读取java中的输入

    In 问题 如何停止读取输入 我的程序继续运行 要求更多输入 public static void main String args throws Exception BufferedReader br new BufferedReader

随机推荐

  • Scala Option 对象位于另一个 Option 对象内

    我有一个模型 其中有一些选项字段 其中包含另一个选项字段 例如 case class First second Option Second name Option String case class Second third Option
  • WiX,如何防止文件卸载,尽管我们忘记设置永久=“是”

    我们有一个用 Wix 创建的产品安装程序 其中包含一个程序包 V1 和一些配置文件 现在 我们将使用新的产品代码进行重大升级 其中旧版本的产品被卸载并且 V2 已安装 我们想要的是保存其中一个配置文件以防止卸载 因为 V2 也需要它 不幸的
  • R:深度复制函数参数

    考虑下面的代码 i 3 j i i 4 j i 然而 我想要的是 i 3 f lt function x j i x j i 4 f 4 16 but i want it to be 12 如果您想知道为什么我要这样做 您可以考虑这段代码
  • Java反射:如何从对象获取字段值,而不知道它的类

    比如说 我有一个返回自定义的方法List与一些物体 它们返回为Object大部头书 我需要从这些对象中获取某个字段的值 但我不知道这些对象的类 有没有办法通过反射或其他方式来做到这一点 假设一个简单的情况 你的领域是public List
  • 字形未加载

    由于某种原因 当我使用 twitter bootstrap 2 3 2 时 图像的图标未加载 我有默认结构 CSS 图像 js 其他一切都有效 我也尝试添加一个简单的图标 例如 span class icon icon ok OK span
  • RabbitMq - ConversationId 与 CorrelationId - 哪个更适合跟踪特定请求?

    RabbitMQ 似乎有两个非常相似的属性 我并不完全理解其中的区别 ConversationId and CorrelationId 我的用例如下 我有一个网站 可以生成Guid 该网站调用 API 将该唯一标识符添加到HttpReque
  • 类型错误:“builtin_function_or_method”对象没有属性“__getitem__”

    我有简单的python功能 def readMainTemplate templateFile template open templateFile r data template read index1 data index origin
  • 类型错误:无法读取反应中未定义的属性“减少”

    我有一个表单 要求用户输入几个字段的字段值 将字段值存储在状态中并以自定义格式显示状态值 所以 我有几个输入字段和一个提交按钮
  • 如何使用 Bash 脚本自动添加用户帐户和密码?

    我需要能够在 Linux Fedora 10 上创建用户帐户 并通过 bash 脚本 或其他方式 如果需要的话 自动分配密码 通过 Bash 创建用户很容易 例如 whoever server usr sbin useradd newuse
  • Angular 2中的zip文件上传问题

    当我尝试上传 zip 文件时 不幸的是它没有上传到服务器上 它给了我错误 有些事情发生了 这是我的代码 const event this fileEvent console log FileEvent gt event const file
  • 在开发容器中运行 VSCode 时如何打开本地终端?

    我正在使用 VSCode 从内部编写代码VSCode 容器 https code visualstudio com docs remote containers 我可以在开发容器内打开终端 https code visualstudio c
  • SHA256 哈希值有多长?

    我要跑SHA256密码 盐 但我不知道要花多长时间VARCHAR设置 MySQL 数据库时 什么是好的长度 正如其名称所示 sha256 的长度为 256 位 由于 sha256 返回十六进制表示 4 位足以编码每个字符 而不是 8 位 如
  • ActionBar 中的 XP 样式字形烦恼

    我不想问太多与组件外观相关的问题 但如今应用程序中的外观似乎同样重要 无论如何 请看下面的图片 两者都使用 TActionManager 和 TActionMainMenuBar 来创建我的主菜单 图像左侧的菜单使用平台默认样式 右侧的菜单
  • 交叉引用自定义引用类型

    我正在尝试将交叉引用添加到 SEQ 字段中 我的文档包含 点标题 这意味着在两个标题元素之间 用户可以添加扩展名 1 1 和 1 2 之间可能是 1 1A 1 1B 点标题代码如下所示 STYLEREF HEADING 2 N SEQ HE
  • 如何获取对象数组中布尔值的计数(如果为真)

    我必须获取对象数组中布尔值的计数 如果为真 json结构如下 id 5 name a select true id 3 name b select false id 2 name x select true id 1 name y sele
  • 将参数传递给 HTML 中的表单操作

    我正在尝试使用此处的文件实现简单的文件上传 http www sanwebe com 2012 05 ajax image upload and resize with jquery and php 我让它工作并设法通过 CSS 更改样式等
  • 逗号运算符如何工作以及它有什么优先级?

    C 中的逗号运算符如何工作 例如 如果我这样做 a b c a最终等于b还是c 是的 我知道这很容易测试 只需在这里记录一下 以便有人可以快速找到答案 Update 这个问题暴露了使用逗号运算符时的细微差别 只是为了记录这一点 a b c
  • 动态替换 XML DML 中节点的值

    我现在正在努力解决这个问题 如何替换文本等于某个变量值的非类型化 XML 列中的节点值 是否可以 My XML
  • 使用Unity时实体框架错误

    在尝试解决我的服务类时 我收到一个错误DbContext无法构造 因为它是一个抽象类 错误消息在这里 Unity Exceptions ResolutionFailedException Resolution of the dependen
  • 为什么 Json 要求 Junit 测试没有参数构造函数?

    我在使用 Jackson 反序列化 JSON 字符串时遇到问题 我收到错误 com fasterxml jackson databind JsonMappingException 找不到类型 简单类型 类RatingDMO 的合适构造函数