栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用GSON解析JSON对象列表

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用GSON解析JSON对象列表

您的 JSON模型与您的对象模型不匹配

您需要一个中间层来填补空白: TypeAdapter

而且,没有用户的命名信息。

最后是名称不匹配:JSON中的“ worklog”,Java中的“ worklogs”。

这是固定版本:

Java模型:

class User {    private String timeSpent;    @SerializedName("worklog")    private List<WorkLog> worklogs = new linkedList<WorkLog>();    private String name;    public List<WorkLog> getWorklogs() {        return worklogs;    }    public void setWorklog(List<WorkLog> worklogs) {        this.worklogs = worklogs;    }    public String getTimeSpent() {        return timeSpent;    }    public void setTimeSpent(String timeSpent) {        this.timeSpent = timeSpent;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

填补空白的管道:

class BookTypeAdapter implements JsonSerializer<Book>, JsonDeserializer<Book>{      Gson gson = new Gson();      public JsonElement serialize(Book book, Type typeOfT, JsonSerializationContext context)      {          JsonObject json = new JsonObject();          for (User user : book.getUser())          {   json.addProperty(user.getName(), gson.toJson(user));          }          return json;      }      public Book deserialize(JsonElement element, Type typeOfT, JsonDeserializationContext context) throws JsonParseException      {          JsonObject json = element.getAsJsonObject();          Book book = new Book();          for (Entry<String, JsonElement> entry : json.entrySet())          {   String name = entry.getKey();   User user = gson.fromJson(entry.getValue(), User.class);   user.setName(name);   book.getUser().add(user);}          return book;      }}

和往返:

GsonBuilder builder = new GsonBuilder();builder.registerTypeAdapter(Book.class, new BookTypeAdapter());Gson gson = builder.create();Book book = gson.fromJson("{" +        " "user1": {" +        "   "timeSpent": "20.533333333333335h"," +        "   "worklog": [" +        "     {" +        "       "date": "06/26/2013"," +        "       "issues": [" +        "         {" +        ""issueCode": "COC-2"," +        ""comment": "ncccccc"," +        ""timeSpent": "20.533333333333335h"" +        "         }" +        "       ]," +        "       "dayTotal": "20.533333333333335h"" +        "     }" +        "   ]" +        " }," +        " "admin": {" +        "   "timeSpent": "601.1h"," +        "   "worklog": [" +        "     {" +        "       "date": "06/25/2013"," +        "       "issues": [" +        "         {" +        ""issueCode": "COC-1"," +        ""comment": ""," +        ""timeSpent": "113.1h"" +        "         }" +        "       ]," +        "       "dayTotal": "113.1h"" +        "     }," +        "     {" +        "       "date": "06/26/2013"," +        "       "issues": [" +        "         {" +        ""issueCode": "COC-1"," +        ""comment": ""," +        ""timeSpent": "8h"" +        "         }," +        "         {" +        ""issueCode": "COC-2"," +        ""comment": ""," +        ""timeSpent": "480h"" +        "         }" +        "       ]," +        "       "dayTotal": "488h"" +        "     }" +        "   ]" +        " }" +        "}", Book.class);String json = gson.toJson(book);

看看我的教程,了解Gson的可能功能:Gson的 Java / JSON映射

请享用!:)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/509146.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号