Java POJO的JSON条目数组

Java POJO的JSON条目数组,java,arrays,json,gson,Java,Arrays,Json,Gson,我有一个JSON文件,在一个数组中有多个条目。每个条目都需要映射到一个java对象。这是我正在测试的JSON字符串(验证了下面的JSON,但我必须删除我在实际Java测试中使用的所有转义字符) 我是这样读这串的 String str = "The JSON string shown above"; InputStream is = new ByteArrayInputStream(str.getBytes()); BufferedReader br = new Buffe

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

我是这样读这串的

    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);
但是my locations数组的大小始终为一,并且只存储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);

for(int i=0;i如果当前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。确保它符合您的预期。

您的数据正确吗?它似乎缺少一个
{
当第二个对象启动时。它在中被成功验证为正确的JSON。我可以通过查看它来判断它是JSON数组中的两个实体,语法在我看来是正确的。查看jsonlint文本区域中格式化的JSON:原始“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
                    }
                ]
            }
        }
    ]