您的 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映射
请享用!:)



