繁体   English   中英

在Android中反序列化JSON字符串

[英]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属性是一个数组和一个对象。

查看JSONObjectJSONArray的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM