用Gson读取JSon String

Pyr*_*nci 6 java json gson

我一直在寻找谷歌试图解决这个问题,但我似乎无法做到这一点.我有以下json字符串从我需要与之交互的其他源返回到我的Java applet.

{
 "A01": {"Status": "Ready", "Time": "00:00"}, 
 "A02": {"Status": "Ready", "Time": "00:00"}, 
 ......
}
Run Code Online (Sandbox Code Playgroud)

目前我不确定我应该如何使用Gson将其解析为我的applet.当我与该计划的设计师交谈时.json字符串设计用于php而不是java,因此当我在php中解码它时,它给了我一个很好的多维关联数组.

对此提出任何建议.

Bal*_*usC 7

PHP中的关联数组转换为MapJava语言.所以,在GSON的眼睛,你的JSON是在格式Map<String, Event>,其中Event类有场statustime.

public class Event {
    private String Status;
    private String Time;

    // Add/generate getters, setters and other boilerplate.
}
Run Code Online (Sandbox Code Playgroud)

是的,大写的字段名称很难看,但这就是你的JSON的样子.否则您需要创建自定义Gson反序列化器.

这是你如何转换它.

Map<String, Event> events = new Gson().fromJson(json, new TypeToken<Map<String, Event>>(){}.getType());
Run Code Online (Sandbox Code Playgroud)

A01,A02等等成为Map关键,其价值成为Event价值Map.您可能想要添加另一个自定义反序列化器来Time进入java.util.Date.

作为另一种选择,您也可以使用Map<String, Map<String, String>>.