我有JSON字符串,如下所示
{ "Status":"Clear", "Class": [{ <br>
{"name":"personA", "available" : 1}, <br>
{"name":"personB", "available" : 0}, <br>
{"name":"personC", "available" : 0}, <br>
{"name":"personD", "available" : 1} <br>
}] }
如何反序列化上面的JSON字符串?
我想到了使用JSONObject将整个JSON String带入其中,但不知道如何获取对象的arraylist(Class对象的列表)并分配给arraylist&lt; Class&gt;。
非常感谢指导和帮助。
更新:
已解决并解决方案
我已经解决了这个问题,但我想我必须解释我是如何以及为何使用这样的解决方案。
所以为了进一步解释我的问题,这是一个json字符串,最初是一个被序列化并从webservice发送到我的应用程序的对象。
原始对象是这样的:
public class StatusJson
{
public String Status { get; set; }
public List<Class> Class { get; set; }
}
所以我要做的就是在我的android中声明一个完全相同的类然后使用这个代码
statusJson statusJSON=g.fromJson(JSonString,StatusJson.class);
将自动将json字符串解析为完全相同的类格式。
如果您直接发送像我这样的JSON序列化类,希望这对您也有帮助。
答案 0 :(得分:3)
我建议您查看Gson library。
您可以使用anotations
创建一个类private class ClassObj {
@SerializedName("personA")
private final String personA;
....
}
然后
ClassObj object = gson.fromJson(jsonString, ClassObj.class);
它可以是复杂的对象,其中包含其他gson对象或Collection。尝试。
答案 1 :(得分:1)
我相信这是一个无效的Json。您的class属性是一个数组和一个对象。
答案 2 :(得分:0)
查看JSONObject和JSONArray的API。
你应该能够从那里弄明白。您只需从字符串中创建一个JSONObject:
离。 JSONObject jsonAsObj = new JSONObject(my_json_string)
;
然后使用JSONArray classArray = jsonAsObject.getJSONArray("Class");
获取阵列......
至于将其转换为ArrayList,您需要创建类型并遍历JSONArray并从中创建对象,并将它们添加到ArrayList中。或者您可以查看另一个帮助程序库,例如GSON。
答案 3 :(得分:0)
您需要使用GSON库 例如:
@SerializedName( “studentName”) public String name;
答案 4 :(得分:0)
需要在其中添加一些缺少的功能 上面的第一个(thealeksandr)答案:
Gson gson = new GsonBuilder().create();
您现在可以在上面的gson
中使用此实例化对象ClassObj object = gson.fromJson(jsonString, ClassObj.class);
为此,只需使用我刚刚演示的Gson Library中的GsonBuilder
类。