gpt4 book ai didi

java - 使用 GSON 解析 json 对象与 json 数组

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

我有一个 JSON,它可以是单个对象,也可以是同一对象的数组。有没有一种方法可以使用 Gson 解析此数据,从而区分单个对象与数组?

我目前唯一的解决方案是手动解析 json 并用 try catch 包围它。首先,我会尝试将其解析为单个对象,如果失败,则会抛出异常,然后我会尝试将其解析为数组。

不过我不想手动解析它……那会花我很长时间。这是正在发生的事情的想法。

public class ObjectA implements Serializable{

public String variable;
public ObjectB[] objectb; //or ObjectB objectb;

public ObjectA (){}
}

这里的对象可以是数组也可以是单个对象。

public class ObjectB implements Serializable{

public String variable1;
public String variable2;

public ObjectB (){}
}

然后在与 json 响应交互时。我正在做这个。

Gson gson = new Gson();
ObjectA[] objectList = gson.fromJson(response, ObjectA[].class);

当 ObjectA 的数组被序列化时,json 包含 ObjectB 的数组或单个对象。

[
{
"variable": "blah blah",
"objectb": {
"variable1": "1",
"variable2": "2"
}
},
{
"variable": "blah blah",
"objectb": {
"variable1": "1",
"variable2": "2"
}
},
{
"variable": "blah blah",
"objectb": [
{
"variable1": "1",
"variable2": "2"
},
{
"variable1": "1",
"variable2": "2"
}
]
}
]

最佳答案

我刚改了ObjectB[]List<ObjectB>进入ObjectA声明。

ArrayList<ObjectA> la = new ArrayList<ObjectA>();
List<ObjectA> list = new Gson().fromJson(json, la.getClass());

for (Object a : list)
{
System.out.println(a);
}

这是我的结果:

{variable=blah blah, objectb={variable1=1, variable2=2}}
{variable=blah blah, objectb={variable1=1, variable2=2}}
{variable=blah blah, objectb=[{variable1=1, variable2=2}, {variable1=1, variable2=2}]}

我认为在全泛型时代,如果你没有特殊需求,你可以从数组切换到列表,你有很多好处,Gson 也可以利用它来进行灵活的解析。

关于java - 使用 GSON 解析 json 对象与 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18993414/

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