java – 用变量键解析json

我想出了具有挑战性的问题.

下面是json响应,其中key是可变的(GUID)

我该如何解析它?我已经尝试了Google Gson,但这不起作用.

{
  "87329751-7493-7329-uh83-739823748596": {
    "type": "work",
    "status": "online",
    "icon": "landline",
    "number": 102,
    "display_number": "+999999999"
  }
}

解决方法:

如果您使用Gson,为了解析您的响应,您可以创建表示JSON数据的自定义类,然后您可以使用Map.

注意Map< String,SomeObject>正是你的JSON所代表的,因为你有一个对象,包含一对字符串和一些对象:

{ "someString": {...} }

所以,首先你的类包含JSON数据(伪代码):

class YourClass
  String type
  String status
  String icon
  int number
  String display_number

然后使用Map解析您的JSON响应,如下所示:

Gson gson = new Gson();
Type type = new TypeToken<Map<String, YourClass>>() {}.getType();
Map<String, YourClass> map = gson.fromJson(jsonString, type);

现在,您可以使用Map访问所有值,例如:

String GUID = map.keySet().get(0);
String type = map.get(GUID).getType();

注意:如果您只想获取GUID值,则不需要创建类YourClass,并且可以使用相同的解析代码,但在Map中使用通用Object,即Map< String,Object>.

上一篇:java – 使用GSON将POJO序列化为不同名称的JSON?


下一篇:java – 当Gson反序列化JSON时,是否可以使用setter?