使用新标准javax.JSON将POJO序列化为JSON

使用新标准javax.JSON将POJO序列化为JSON,java,json,java-ee-7,Java,Json,Java Ee 7,我喜欢在Java中建立JSON序列化标准的想法,javax.JSON是向前迈出的一大步,您可以创建如下对象图: JsonObject jsonObject3 = Json.createObjectBuilder() .add("name", "Ersin") .add("surname", "Çetinkaya") .add("age", 25) .add("address", Json.createObjectBuilder() .add("city", "Bu

我喜欢在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对象(如映射)直接序列化为JSON?就像我在Gson中所做的那样:

Person person = new Person();
String jsonStr = new Gson().toJson(person);

如何使用新的标准API实现这一点

用于JSON处理的Java API不包括对象绑定。这将在一个单独的JSR中讨论。

可能是因为这个问题已经存在了将近5年(我没有检查哪个java版本有这些类),但是有一个标准的方法使用
javax.json.
类:

JsonObject json = Json.createObjectBuilder()
        .add("key", "value")
        .build();
try(JsonWriter writer = Json.createWriter(outputStream)) {
    writer.write(json);
}

参见JSR-367,JSON绑定的JavaAPI(JSON-B),这是Java中的一个标题特性™ EE 8

文件:


JSR会在JavaEE7中交付吗?@NestorHernandezLoli-不,它不是已经发布的JavaEE7的一部分。很遗憾,我将使用Gson,这将有助于使Gson成为JSR@NestorHernandezLoli-希望不久会有JSON绑定JSR的消息。一旦JSR启动,我将在我的“JavaXML和JSON绑定”博客()上宣布它。
// 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);