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

Nes*_*oli 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", "Bursa")
          .add("country", "Türkiye")
          .add("zipCode", "33444"))
.add("phones",
              Json.createArrayBuilder()
                  .add("234234242")
                  .add("345345354"))
.build();    
Run Code Online (Sandbox Code Playgroud)

就是这样,但是如何将pojo或简单的Java对象(如Map)直接序列化为JSON?就像我在Gson中所做的那样:

Person person = new Person();
String jsonStr = new Gson().toJson(person);
Run Code Online (Sandbox Code Playgroud)

如何使用新标准API执行此操作?

bdo*_*han 11

用于JSON处理的Java API(JSR-353)不包括对象绑定.这将在单独的JSR中介绍.

  • 很遗憾,我将使用Gson,让Gson成为JSR会很有用 (2认同)

RJ.*_*ang 6

请参阅 JSR-367,用于 JSON 绑定的 Java API (JSON-B),这是 Java™ EE 8 中的一项重要功能。

文档:Json Binding 1.0 用户指南

// 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);
Run Code Online (Sandbox Code Playgroud)