使用GSON解析json字符串列表

时间:2018-12-07 11:01:48

标签: java gson

我正在使用REST应用程序,并且从服务器获得的响应是​​Json字符串,其格式如下:

[{"car": "ford"}, {"car": "nissan"}, {"car": "bmw"}]

我想使用Gson通过该列表中的每个元素通过键检索信息,但是由于它是以字符串形式返回的,所以我不确定该如何处理。

如果我只是收到以下答复:

String json = {"car:": "ford"};

然后我可以按以下方式获取汽车的价值:

  Map<String,Object> result = new Gson().fromJson(json, Map.class);
  System.out.println( result.get( "car" ) );

但是由于原始字符串是json的列表,所以更加困难。

帮助表示赞赏。理想情况下仍使用Gson

谢谢

2 个答案:

答案 0 :(得分:1)

这将帮助您:

[
{
   "category": "country",
   "list": [
      {
         "name": "Germany",
         "enabled": true
      },
      {
         "name": "US",
         "enabled": false
      }
   ]
},
{
   "category": "state",
   "list": [
      {
         "name": "Arizona",
         "enabled": false
      },
      {
         "name": "Alabama",
         "enabled": true
      }
   ]
},
{
   "category": "city",
   "list": [
      {
         "name": "Greenville",
         "enabled": true
      },
      {
         "name": "Houston",
         "enabled": false
      }
   ]
}]

答案 1 :(得分:0)

您拥有的json字符串实际上是一个数组。请尝试以下:

  String json = "[{\"car\": \"ford\"}, {\"car\": \"nissan\"}, {\"car\": \"bmw\"}]";
  List<Map<String,Object>> result = new Gson().fromJson(json, List.class);
  result.forEach(l ->{
    l.forEach((k, v)->{
      System.out.println(k + ": " + v);
    });
  });