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

我有一个由多个嵌套对象和对象数组组成的复杂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"])



长风秋雁
浏览 210回答 1
1回答

慕莱坞森

在我看来,您正在解组 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 maybeOptionChain optionChain = optionChainResponse.getOptionChain();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java