12

GsonJavaオブジェクトをjsonにシリアライズ/デシリアライズするために使用しています。で表示したいのですUIが、より良い説明を作成するためのスキーマが必要です。これにより、オブジェクトを編集し、実際よりも多くのデータを追加できます。json スキーマを提供
できますか? 他のフレームワークにその機能がありますか?Gson

4

2 に答える 2

28

Gson ライブラリにはおそらくそのような機能は含まれていませんが、Jacksonライブラリとjackson-module-jsonSchemaモジュールで問題を解決することができます。たとえば、以下のクラスの場合:

class Entity {

    private Long id;
    private List<Profile> profiles;

    // getters/setters
}

class Profile {

    private String name;
    private String value;
    // getters / setters
}

このプログラム:

import java.io.IOException;
import java.util.List;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;

public class JacksonProgram {

    public static void main(String[] args) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
        mapper.acceptJsonFormatVisitor(Entity.class, visitor);
        JsonSchema schema = visitor.finalSchema();
        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema));
    }
}

以下のスキーマを出力します。

{
  "type" : "object",
  "properties" : {
    "id" : {
      "type" : "integer"
    },
    "profiles" : {
      "type" : "array",
      "items" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "value" : {
            "type" : "string"
          }
        }
      }
    }
  }
}
于 2013-07-22T11:43:22.060 に答える