[英]Deserializing JSON string in android
我有如下读取的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字符串放入其中的想法,但不知道如何获取对象的arraylist(Class对象的列表)并分配给arraylist <Class>。
指导和帮助深表感谢。
更新时间 :
解决和解决方案显示
我已经解决了这个问题,但是我想我必须解释如何以及为什么使用这种解决方案。
因此,为了进一步解释我的问题,这是一个json字符串,最初是一个对象,该对象已被序列化并从Web服务发送到我的应用程序。
原始对象是这样的:
public class StatusJson
{
public String Status { get; set; }
public List<Class> Class { get; set; }
}
所以我要做的就是在android中声明一个完全相同的类,然后使用此代码
statusJson statusJSON=g.fromJson(JSonString,StatusJson.class);
它将自动将json字符串解析为完全相同的类格式。
如果您直接发送像我这样的JSON序列化类,希望对您也有帮助。
我建议您检查Gson库 。
您可以创建带有注释的类
private class ClassObj {
@SerializedName("personA")
private final String personA;
....
}
然后
ClassObj object = gson.fromJson(jsonString, ClassObj.class);
它可以是复杂的对象,其中包含其他gson对象或Collection。 尝试。
我相信这是无效的杰森。 您的class属性是一个数组和一个对象。
查看JSONObject和JSONArray的API。
您应该能够从那里弄清楚。 您只需从字符串中创建一个JSONObject即可:
例如 JSONObject jsonAsObj = new JSONObject(my_json_string)
;
然后使用JSONArray classArray = jsonAsObject.getJSONArray("Class");
得到你的数组...
至于将其转换为ArrayList,您需要创建类型并遍历JSONArray并从中创建对象,然后将它们添加到ArrayList中。 或者,您可以查看另一个帮助程序库,例如GSON 。
您需要使用GSON库,例如:
@SerializedName(“ studentName”)公共字符串名称;
有必要在上述第一(thealeksandr)的答案中添加一些缺少的功能:
Gson gson = new GsonBuilder().create();
现在,您可以在上述ClassObj object = gson.fromJson(jsonString, ClassObj.class);
使用此实例化对象gson
ClassObj object = gson.fromJson(jsonString, ClassObj.class);
为此,只需使用我刚刚演示的Gson库中的GsonBuilder
类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.