我喜欢在Java中使用JSON序列化标准的想法,javax.json是向前迈出的一大步,你可以像这样做一个对象图:
JsonObject jsonObject3 =
Json.createObjectBuilder()
.add("name", "Ersin")
.add("surname", "Çetinkaya")
.add("age", 25)
.add("address",
Json.createObjectBuilder()
.add("city", "Bursa")
.add("country", "Türkiye")
.add("zipCode", "33444"))
.add("phones",
Json.createArrayBuilder()
.add("234234242")
.add("345345354"))
.build();
就是这样,但是如何将pojo或简单的Java对象(如Map)直接序列化为JSON?就像我在Gson中所做的那样:
Person person = new Person();
String jsonStr = new Gson().toJson(person);
如何使用新标准API执行此操作?
用于JSON处理的Java API(JSR-353)不包括对象绑定。这将在单独的JSR中介绍。
也许是因为这个问题已经差不多5年了(我没有检查哪个java版本有这些类)但是有一个标准的javax.json.*
类方法:
JsonObject json = Json.createObjectBuilder()
.add("key", "value")
.build();
try(JsonWriter writer = Json.createWriter(outputStream)) {
writer.write(json);
}
请参阅JSR-367,Java API for JSON Binding(JSON-B),这是Java™EE 8中的标题功能。
文件:Json Binding 1.0 Users Guide
// Create Jsonb and serialize
Jsonb jsonb = JsonbBuilder.create();
String result = jsonb.toJson(dog);
// Deserialize back
dog = jsonb.fromJson("{name:\"Falco\", age:4, bitable:false}", Dog.class);