为了账号安全,请及时绑定邮箱和手机立即绑定

如何将具有嵌套对象的复杂 json 文件映射到 java 对象?

如何将具有嵌套对象的复杂 json 文件映射到 java 对象?

长风秋雁 2022-06-15 16:29:55
我有一个由多个嵌套对象和对象数组组成的复杂Json文件。第一个对象是一个“OptionChain”,它有一个名为“Result”的对象。“结果”有嵌套对象:“报价”和“选项”。最后,“Options”嵌套了名为“Call”和“Put”的对象数组。我将所有类变量都用Jackson@JSonProperty注释并使用Spring Boot来处理对象映射。我是使用杰克逊和对象映射的新手。当我运行程序时,我得到这个错误:Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "optionChain" (class com.thompson.OptionsImpliedMovement.data.OptionChain), not marked as ignorable (one known property: "result"]) at [Source: (String)"{"optionChain":{"result":[{"underlyingSymbol":"KO","expirationDates":[1550188800,1550793600,1551398400,1552003200,1552608000,1553212800,1553817600,1555545600,1558051200,1561075200,1565913600,1579219200,1610668800],"strikes":[37.0,38.0,40.5,41.5,42.5,43.5,44.5,45.5,46.5,47.5,48.5,49.5,50.5,51.0,51.5,52.0,53.0,53.5,54.0],"hasMiniOptions":false,"quote":{"language":"en-US","region":"US","quoteType":"EQUITY","quoteSourceName":"Nasdaq Real Time Price","currency":"USD","exchangeDataDelayedBy":0,"earnin"[truncated 10817 chars]; line: 1, column: 17] (through reference chain: com.thompson.OptionsImpliedMovement.data.OptionChain["optionChain"])
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

在我看来,您正在解组 JSON,{ "optionChain": {...} }但您是直接将其转换为OptionChain. 相反,您需要定义一个具有单个OptionChain成员的类,因为您正在解组包含此optionChain字段的外部对象({ }围绕整个响应的对象是您尝试解组的对象)。


因此,例如:


public class OptionChainResponse {


   @JsonProperty("optionChain")

   private OptionChain optionChain;


   // getter/setter

}

接着:


OptionChainResponse optionChainResponse = objectMapper.readValue(rawJson, OptionChainResponse.class);

// do some validation or checking maybe

OptionChain optionChain = optionChainResponse.getOptionChain();


查看完整回答
反对 回复 2022-06-15
  • 1 回答
  • 0 关注
  • 209 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号