gpt4 book ai didi

java - 使用 Gson 优雅地处理嵌套的 json 对象?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:44 24 4
gpt4 key购买 nike

我在 Android 上使用 Gson 解析来自服务器的响应。每个响应都有一些(对我来说)无用的数据,这使我的 Gson 模型变得复杂。这是返回的 json 的一般层次结构:

response: {
date: 1406253006807,
otherUselessData1: "This is some useless data",
otherUselessData2: "This is some useless data",

usefulJsonObject: { <---- This is really the object that I care about
}

}

所有高于或与 usefulJsonObject 相同级别的东西我真的可以没有。为每个请求返回无用的数据,实际的响应作为 usefulJsonObject 嵌入在下面。这不会是一个大问题,但它确实使我的 gson 模型对象变得困惑。

例如:假设我可以提出 3 个请求:A、B 和 C。对于每个响应,我似乎至少需要创建 3 个自定义类。

public class ResponseA {

@SerializedName("response") ResponseObjectA responseObject;

public static class ResponseObjectA {
@SerializedName("usefulJsonObject") UsefulObjectA usefulObject;
}

public static class UsefulObjectA {
}

}

我已经尝试了一些解决方案,但我还没有发现任何不会给我的流程增加额外步骤的优雅解决方案。我正在使用改造来执行我的 http 请求,它只是将完全解析的 gson 对象返回给我,这真的很好。我想到了其他解决方案,比如让有用的对象只是一个 JsonElement,然后在第一次返回后进行第二次 gson 调用。同样,不理想。

我只是想知道我是否遗漏了什么。当然,我不是唯一遇到过这种情况的人,所以我想我应该问问其他人会如何处理这种情况。

最佳答案

是初始化Instance值,不是NULL值。检查我的示例。

地址.java

public class Address {
public Address(){
}
}

Person.java

public class Person {
private String name;
private String nrc;
private Address address;

public Person(String name, String nrc, Address address) {
this.name = name;
this.nrc = nrc;
this.address = address;
}
}

下面的 Json 字符串等同于

Person person = new Person("Zaw Than Oo", "11111", null);

{
"name": "Zaw Than Oo",
"nrc": "11111"
}

下面的 Json 字符串等同于

Person person = new Person("Zaw Than Oo", "11111", new Address());

{
"name": "Zaw Than Oo",
"nrc": "11111",
"address": {} <-- here use less object for you.
}

即使您不创建新的 Instance,其他 lib/api(您使用的)也可能通过 Reflection 创建该实例。

简而言之

{
...
"xxx": {} --> new instance without data/value
...
}
{
...
--> null value
...
}

关于java - 使用 Gson 优雅地处理嵌套的 json 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24947159/

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