用于实现Map和List的JSON值的Java包装类

时间:2014-12-12 17:54:53

标签: java json jackson

是否有一个常用的库,它具有以类型安全的方式表示json的类?我正在寻找一个json对象存储在Map中,而json数组存在于List中。

我想做的是这样的事情:

myJson.get("myInt").asInt();
myJson.get("myString").asString();

.get()应该返回一个丢失的节点对象,因此不需要进行空检查。

杰克逊是一个非常好的库,可以完成所有这些工作,但杰克逊JsonObject和JsonArray类没有实现Map和List。

1 个答案:

答案 0 :(得分:1)

您必须将JSON转换为所需类型。以下示例将其转换为Map<String,String>。如果它无法转换,它将引发异常。

public class JsonMapExample {
    public static void main(String[] args) {

        String json = "{\"name\":\"mkyong\", \"age\":\"29\"}";

        Map<String,String> map = new HashMap<String,String>();
        ObjectMapper mapper = new ObjectMapper();

        try {       
            map = mapper.readValue(json, new TypeReference<HashMap<String,String>>(){});

        } catch (JsonMappingException e) {
            e.printStackTrace();
        }
    }
}

通常在通过网络发送序列化对象时会发生什么,在编组时会丢失类型安全性,并通过解组将其重新添加到另一端。

请参阅: