0

如何在 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"
}
4

2 回答 2

0

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

JSON解析

只需几个简短的步骤:

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

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

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

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

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

祝你好运。

于 2013-06-18T08:03:32.877 回答
-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);
        } 
于 2013-06-18T07:47:55.260 回答