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

标签 java json jackson

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

我想做的是这样的:

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

.get() 应返回缺失的节点对象,因此不需要空检查。

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

最佳答案

您必须将 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();
        }
    }
}

这通常是通过网络发送序列化对象时发生的情况,在编码它时会失去类型安全性,并通过解码将其添加回另一端。

参见:

关于用于实现 Map 和 List 的 JSON 值的 Java 包装类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27449365/

相关文章:

android - 启用缩小后 JsonProperty 不工作

Java 8 Flatmap 从集合中解开多个对象

javascript - AngularJS:如何显示嵌套对象?

java - Jersey ClientResponse 获取复合实体列表

java - 尽管已提及该属性,但出现无法识别的属性异常

javascript - 使用 Javascript 模拟 API 调用

java - Sharedpreference 似乎不起作用,无法显示存储的数据

java - 跳出循环

java - ObjectAnimator 重复循环延迟

Javascript 添加系列中不存在的日期