gpt4 book ai didi

java - 将带有嵌套对象的 JSON 映射到 GSON

转载 作者:行者123 更新时间:2023-12-01 23:56:32 24 4
gpt4 key购买 nike

我有一个使用 AVRO 自动生成的 JSON 模式类。我想使用此 JSON 创建一个 GSON 对象。我尝试使用此代码来做到这一点

    @Test
public void parseJson() {

JSONParser jsonParser = new JSONParser();
try {
JSONObject jsonObject = (JSONObject) jsonParser.parse(new FileReader("/pathto/test.json"));
ThinEvent thinEvent = new Gson().fromJson(jsonObject.toString(), ThinEvent.class);
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}

但这会导致以下错误...看起来 GSON 正在寻找一个字符串,但 json 实际上包含一个嵌套对象? ThinEvent 对象将 refService 声明为列表。

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 74 path $.references[0].refService
private java.util.List<com.lm.gde.eventing.avro.Reference> references;

这是我的 JSON,我已用 XXXX 替换了一些值。

{
"eventType": "policy.PolicyPremiumChangedEvent",
"correlationId": "XXXX",
"references": [
{
"ref": "XXX",
"refType": "policy_id",
"refService": {
"com.lm.gde.eventing.avro.RefService": "policy_service"
},
"links": {
"array": [
{
"refUri": ""
}
]
}
},
{
"ref": "XXXXXX",
"refType": "policy_number",
"refService": {
"com.lm.gde.eventing.avro.RefService": "policy_service"
},
"links": {
"array": [
{
"refUri": "XXXXXX"
}
]
}
},
{
"ref": "2019-09-28",
"refType": "policy_tx_effective_date",
"refService": {
"com.lm.gde.eventing.avro.RefService": "policy_service"
},
"links": {
"array": [
{
"refUri": "XXXXX"
}
]
}
}
],
"eventContext": null,
"Timestamp": 1569574003295,
"Version": "1"
}

最佳答案

GSON 支持嵌套对象 check this article 。只需创建与 Json 匹配的模型(但在 Java/Kotlin 中)并将其扔到 GSON 即可。 Same with collections 。您甚至可以使用列表代替数组。

您可以获取完整字符串形式的 json 文件并对其进行反序列化。

关于java - 将带有嵌套对象的 JSON 映射到 GSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58199077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com