是否有一个常用的库包含以类型安全的方式表示 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/