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

前端之家收集整理的这篇文章主要介绍了java – 使用GSON解析json对象与json数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 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"
            },{
                "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},{variable1=1,variable2=2}]}

我认为,在完整的泛型时代,如果您没有特定的需求,您可以从阵列切换到列表,您也可以使用Gson也可以使用灵活的解析来获得许多好处.

原文链接:/java/126581.html

猜你在找的Java相关文章