gpt4 book ai didi

json - 如何将复杂对象映射到简单字段

转载 作者:行者123 更新时间:2023-12-02 04:56:16 25 4
gpt4 key购买 nike

我有一个类似于以下内容的 JSON 文档:

{
"aaa": [
{
"value": "ewfwefew"
}
],
"bbb": [
{
"value": "ewfewfe"
}
]
}

我需要将其反序列化为更干净的内容,例如:

public class MyEntity{
private String aaa;
private String bbb;
}

在反序列化时解包每个数组并提取“值”字段的最佳方法是什么?

最佳答案

@Tim Mac 的回答是正确的,但您可以通过编写 custom deserializer 使其更优雅为您的 MyEntity 类。

应该是这样的:

private class MyEntityDeserializer implements JsonDeserializer<MyEntity> {

public MyEntity deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {

JsonObject rootObj = json.getAsJsonObject();

String nid = rootObj
.get("nid")
.getAsJsonArray()
.get(0)
.getAsJsonObject()
.get("value")
.getAsString();

String uuid = rootObj
.get("uuid")
.getAsJsonArray()
.get(0)
.getAsJsonObject()
.get("value")
.getAsString();

MyEntity entity = new MyEntity(nid, uuid);

return entity;
}
}

然后你必须注册TypeAdapter:

Gson gson = new GsonBuilder().registerTypeAdapter(MyEntity.class, new MyEntityDeserializer()).create();

最后,您只需像往常一样解析您的 JSON,使用:

MyEntity entity = gson.fromJson(yourJsonString, MyEntity.class);

Gson 将自动使用您的自定义反序列化器将您的 JSON 解析到您的 MyEntity 类中。

关于json - 如何将复杂对象映射到简单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17926428/

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