假设我有以下JSON字符串:
{ "1": { "id": "12", "name": "xyz" }, "2": { "id": "12", "name": "xyz" }, "3": { "id": "12", "name": "xyz" }, "4": { "id": "12", "name": "xyz" }, "5": { "id": "12", "name": "xyz" }, "6": { "id": "12", "name": "xyz" } }
如何从Java应用程序中创建此JSON结构?是否有任何好的库可以帮助编组和解组JSON for Java?
答案 0 :(得分:0)
使用像jackson-core这样的库,您可以轻松高效地将json转换为对象表示,反之亦然。
例如,您展示的JSON是Map<String,SomeObject>
,其中SomeObject
将表示如下:
public class SomeObject {
private String id;
private String name;
}
如果构造函数使用id
和name
作为地图条目的值,地图将按如下方式填充。
Map<String, SomeObject> map = new LinkedHashMap<>();
map.put( "1", new SomeObject( "12", "xyz" ) );
map.put( "2", new SomeObject( "12", "xyz" ) );
map.put( "3", new SomeObject( "12", "xyz" ) );
map.put( "4", new SomeObject( "12", "xyz" ) );
map.put( "5", new SomeObject( "12", "xyz" ) );
map.put( "6", new SomeObject( "12", "xyz" ) );
现在从Java获取JSON字符串:
String output = new ObjectMapper().writeValueAsString( map );
如果您有JSON字符串并且想要获得对象表示:
ObjectMapper mapper = new ObjectMapper();
Map<String, SomeObject> map = new LinkedHashMap<>();
map = mapper.readValue( json, new TypeReference<Map<String,SomeObject>>(){} );
显然这是一个基本的概述。阅读他们的github here上托管的Jackson API的文档是明智的。
答案 1 :(得分:0)
我会推荐另一个图书馆:fastjson。与杰克逊相比,它更简单,更快,更小。
Map<String, Object> map = JSON.parseObject(json, Map.class);
答案 2 :(得分:0)
有几个流行的图书馆:杰克逊已经在这里提到过,gson,org.json和其他人 还有一些便利库不处理序列化,但可用于解析,例如https://github.com/jayway/JsonPath。它可能(没有自己测试)可能会慢一点但更方便 如果你没有每秒处理大量的json文档或非常大/ comples文档(或两者),你可能会选择任何看起来很简单的库。如果您处理我提到的案例,您需要在谷歌阅读一些性能测试结果或运行您自己的,如果可能的话。