给定以下.json文件:

[
    {
        "name" : "New York",
        "number" : "732921",
        "center" : [
                "latitude" : 38.895111, 
                "longitude" : -77.036667
            ]
    },
    {
        "name" : "San Francisco",
        "number" : "298732",
        "center" : [
                "latitude" : 37.783333, 
                "longitude" : -122.416667
            ]
    }
]

I prepared two classes to represent the contained data:

public class Location {
    public String name;
    public int number;
    public GeoPoint center;
}

...

public class GeoPoint {
    public double latitude;
    public double longitude;
}

以便从中解析内容.json文件我使用Jackson 2.2.x并准备了以下方法:

public static List<Location> getLocations(InputStream inputStream) {
    ObjectMapper objectMapper = new ObjectMapper();
    try {
        TypeFactory typeFactory = objectMapper.getTypeFactory();
        CollectionType collectionType = typeFactory.constructCollectionType(
                                            List.class, Location.class);
        return objectMapper.readValue(inputStream, collectionType);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

只要我go 掉center属性,所有内容都可以被解析.然而,当我试图解析地理坐标时,我最终得到了以下错误消息:

通用域名格式.fasterxml.杰克逊.数据绑定.JsonMappingException:无法反序列化的实例

推荐答案

您的JSON字符串格式不正确:center的类型是无效对象的array.将longitudelatitude附近的JSON字符串中的[]替换为{},这样它们将成为对象:

[
    {
        "name" : "New York",
        "number" : "732921",
        "center" : {
                "latitude" : 38.895111, 
                "longitude" : -77.036667
            }
    },
    {
        "name" : "San Francisco",
        "number" : "298732",
        "center" : {
                "latitude" : 37.783333, 
                "longitude" : -122.416667
            }
    }
]

Json相关问答推荐

从Json响应中为需要每个值的Post请求提取多个值

GO KaZaam转换返回意外结果

jq如何合并两个json对象

条件性构建/修改嵌套对象数组

匹配来自不同数组的值

JOLT 在 struct 体中间添加一个 JSON 字段

我无法在 Go - Gin 中解析日期/时间

如果 jq 数组中的字符串是对象或字符串,则获取值

如何使用 ConfigurationBuilder 解析现有的 json 字符串(不是文件)

如何解决名为 null 的map值

Swift:如何从字典中删除空值?

如何使用 gson 调用默认反序列化

将 JSON 数据导入 Google 表格

将json字符反序列化为枚举

消息通知产生此内容无法显示

我应该如何处理 JSON 中的 HATEOAS 链接和引用?

为不同类型的项目数组正确的 JSON Schema

通过 JSON 发送 64 位值的公认方式是什么?

春天:返回@ResponseBodyResponseEntity>

JSON - 是否有任何 XML CDATA 类似功能?