我有一个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也可以用来进行灵活解析的许多好处。
服务器JSON数据显示在活动中使用改造。JSON数据通过gson转换。 给错误:"java.lang.IllegalState异常:预期BEGIN_ARRAY但BEGIN_OBJECT在第1行第2列路径$" JSON格式: 代码: 主要活动。kt
问题内容: 我有一个像这样的JSON对象: 并尝试与Gson解析: 但是“ responceBean”始终为“ null” 这是所有其他类: 这是我的最新尝试。我不知何故找不到正确的方法。任何帮助将不胜感激。 问题答案: 您的 JSON模型与您的对象模型不匹配 。 您需要一个中间层来填补空白: TypeAdapter 。 而且,没有用户的命名信息。 最后是名称不匹配:JSON中的“ worklog
} 我在公共类中的主要方法是这样的: 以下是包裹的代码: } 但是我似乎没有找到正确的方法来将变量的所有值存储在列表中。现在我得到的只是parcel[data=null]。
我有一个这样的JSON文件: 如何使用Gson仅解析“数据”部分?我的想法是将JSON读入地图,然后用我在GSON中的键“数据”解析普通JSON内容。我能做些更优雅的事吗?
问题内容: 我有一个像这样的JSON文件: 在文件具有根元素之前,我将使用: 代码,但我不认为如何将类编码为根元素是一个数组。 我试过使用: 与: 但是还没有运气。使用这种方法我还能怎么读呢? PS我有这个工作使用: 但是我更想知道如何使用这两种方法(如果可能)。 问题答案: 问题是由放置在数组中的JSON对象(在 每种 情况下)的末尾逗号引起的: 如果删除它们,您的数据将成为 和 应该工作正常。
附言:我用这个来工作: 但我更希望知道如何做到这一点(如果可能的话)与这两种方法。