POJO的JSON数组条目

时间:2015-06-09 18:41:11

标签: java arrays json gson

我有一个JSON文件,在数组中有多个条目。每个条目都需要映射到java对象。这是我正在测试的JSON字符串(http://jsonlint.com/验证了下面的JSON,但我必须删除我在实际Java测试中使用的所有转义字符),

  [{
    "LocId":99,
    "typeId":99,
    "name":"foo",
    "parentId":99,
    "geoCode":
    {
      "type":"foo",
      "coordinates":
      [{
        "latitude":99.0,
        "longitude":99.0
      }]
    }
  ,
    "LocId":8,
    "typeId":99,
    "name":"foo",
    "parentId":99,
    "geoCode":
    {
      "type":"foo",
      "coordinates":
      [{
        "latitude":99.0,
        "longitude":99.0
      }]
    }
  }]

我这样读了这个字符串,

    String str = "The JSON string shown above";
    InputStream is = new ByteArrayInputStream(str.getBytes());
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    LocIdClass[] locations = new Gson().fromJson(br, LocIdClass[].class);

但是我的位置数组的大小始终是1,只存储了JSON字符串中的最后一个条目。

    for(int i=0; i<locations.length; i++)
        System.out.println(locations[i]);

    System.out.println("The size of the array is " + locations.length);

我不确定为什么只会检索JSON字符串中的最后一个条目,但会跳过其他条目。我提到了这篇SO帖子来找出POJO数组Jackson - Json to POJO With Multiple Entries

1 个答案:

答案 0 :(得分:2)

您当前的json有效负载出错,请尝试以下操作:

    [
        {
            "LocId": 99,
            "typeId": 99,
            "name": "foo",
            "parentId": 99,
            "geoCode": {
                "type": "foo",
                "coordinates": [
                    {
                        "latitude": 99,
                        "longitude": 99
                    }
                ]
            }
        },
        {
            "LocId": 8,
            "typeId": 99,
            "name": "foo",
            "parentId": 99,
            "geoCode": {
                "type": "foo",
                "coordinates": [
                    {
                        "latitude": 99,
                        "longitude": 99
                    }
                ]
            }
        }
    ]

编辑:为了避免将来出现此问题,您可以使用jsonlint.com检查您的json。确保它符合您的预期。