当前位置: 首页 > 面试题库 >

用可变键解析json

公孙栋
2023-03-14
问题内容

我只是提出了具有挑战性的问题。

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

我该如何解析?我已经尝试过Google Gson,但这没有用。

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

问题答案:

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

请注意,a Map<String, SomeObject>正是您的JSON所代表的,因为您有一个object,其中包含一对string和一些object

{ "someString": {...} }

因此,首先您的类包含JSON数据(以 伪代码 ):

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

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

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,并且可以使用相同的解析代码,但可以Object在中使用泛型Map,即Map<String, Object>



 类似资料:
  • 问题内容: 我正在使用Joda解析日期,并且具有不使用前导零的格式,例如: 请注意,dayOfMonth字段用空白填充左。 目前,我似乎不得不使用两种不同的格式,如果其中一种失败,则需要重新解析 是否有可以同时处理两种情况的单一格式(或API开关)?(SimpleDateFormat的答案是否相同-我不使用?) 问题答案: 我刚刚创建了一个快速程序来检查这一点- 输出是- 因此,即使source2

  • 问题内容: 我有一个json字符串,如下所示: 我想从上面的json字符串中提取and 的值。我看了在golang网站http://play.golang.org/p/YQgzP7KPp9上给出的示例 但是我的问题是json在顶层的关键是动态的。这意味着是动态的。我创建了这样的结构: 但不确定如何提取和提取。我的代码在http://play.golang.org/p/Vbdkd3XIKc 问题答案

  • 问题内容: 我有一个.NET项目。我正在使用JSON.NET库。我需要使用该库来解析一些JSON。我的JSON看起来像这样: 该对象实际上只是键/值对的列表。我试图弄清楚如何使用JSON.NET来1)解析此JSON和2)通过键/值对进行循环。有没有办法做到这一点?如果是这样,怎么办? 我唯一看到的是将反序列化为强类型的对象。 非常感谢! 问题答案: 您可以反序列化为 由于JObject实现,因此您

  • 考虑到这个众所周知的C++模式: 我想知道为什么将其中一个参数声明为可变lambda会改变重写解析。 godbolt上的活生生的例子:

  • 问题内容: 我试图用来构造一个哈希值,其中键名来自变量。像这样: 但是,这不起作用,并出现以下错误: 问题答案: 使用括号可以尽早评估:

  • 问题内容: 有没有一种方法可以创建JSR-310格式器,该格式器能够以可变的秒分数来解析以下两个日期/时间? 要么 示例代码: 问题答案: 这样可以解决问题: JiriS的答案不正确,因为它使用,而正确的方法是使用(它也处理小数点)。差异可以在第二个系统中看到,其中错误地解析了“2015-05-07T13:20:22.000276”。 在大多数情况下,解析时比直接使用格式化程序更整洁。 使用生成器