9

我喜欢在 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 做到这一点?

4

3 回答 3

13

Java API for JSON Processing (JSR-353) does not cover object binding. This will be covered in a separate JSR.

于 2013-06-27T18:55:32.953 回答
6

请参阅 JSR-367,Java API for JSON Binding (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);
于 2019-05-09T05:55:27.980 回答
1

也许是因为这个问题已经有将近 5 年的历史了(我没有检查哪个 java 版本有这些类)但是有一个标准的javax.json.*类方法:

JsonObject json = Json.createObjectBuilder()
        .add("key", "value")
        .build();
try(JsonWriter writer = Json.createWriter(outputStream)) {
    writer.write(json);
}
于 2018-03-06T14:09:13.330 回答