在android

时间:2016-07-01 02:12:40

标签: java android json

我有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序列化类,希望这对您也有帮助。

5 个答案:

答案 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)

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