如何使用GSON反序列化?

时间:2013-06-18 06:56:16

标签: android json gson

如何使用Android中的GSON从服务器反序列化以下响应? 我想反序列化以下代码并使用JsonReader将数据存储在java类实例中。

{
   "createTimestamp": "2013-05-23 09:39:41",
   "firstName": "ABCD",
   "lastName": "EFGH",
   "mediaListResponse":
   [
       {
           "mediaTitle": "Media Title",
           "createTimestamp": null,
           "mediaId": 120,
           "mediaUrl": "/img/mediadata/46/420/1/230.jpg",
           "authenticationKey": null,
           "responseCode": null,
           "responseMessage": null
       },
       {
           "mediaTitle": "Media Title",
           "createTimestamp": null,
           "mediaId": 120,
           "mediaUrl": "/img/mediadata/46/420/1/230.jpg",
           "authenticationKey": null,
           "responseCode": null,
           "responseMessage": null
       }
   ],
   "authenticationKey": null,
   "responseCode": "200",
   "responseMessage": "OK"
}

2 个答案:

答案 0 :(得分:0)

看看我写的这篇博客文章,详细解释如何使用本机工具和JSON库解析android中的GSON文件:

JSON Parsing

只需几个小步骤:​​

1。您需要创建一个代表您已解析的JSON数据的类。

2. :设置此类中的变量名称以匹配已解析数据的名称,或使用注释指定正确的名称。

3. 最后,您将使用类似这样的命令来解析数据:

Student student = gson.fromJson(currentStudent.toString(), Student.class);

指南中详细解释了所有这些步骤。

祝你好运。

答案 1 :(得分:-1)

您可以创建与json输入相对应的java对象类,例如

   class YourObject {
    String createTimestamp;
    String firstName;
    String lastName;
    List<MediaListItem> mediaListResponse;
   [...] 
  }

  class MediaListItem {
     String mediaTitle;
     String createTimestamp;
     int mediaId;
     [...]
  }

您可以使用这些对象来保存已解析的json对象。我是这样做的:

<强>更新

对于单个json对象:

       YourObject obj = gson.fromJson(jsonString, YourObject.class);

对于json对象数组:

        Gson gson = new Gson();
        JsonParser parser = new JsonParser();
        JsonArray Jarray = parser.parse(jsonMetaData).getAsJsonArray();
        ArrayList<MyObject> parsedObj = new ArrayList<MyObject>();
        // Add each parsed elements from the Jarray to your object structure
        for (JsonElement obj : Jarray)
        {
            MyObject obj = gson.fromJson(obj, MyObject.class);
            parsedObj.add(obj);
        }