Gson
を使用して、javaオブジェクトをjsonにシリアル化/逆シリアル化しています。私はそれをUI
に表示したいと考えており、より良い説明をするためにはスキーマが必要です。これにより、オブジェクトを編集し、実際に存在するよりも多くのデータを追加することができます。
Gson
はjsonスキーマを提供できますか?
他のフレームワークにはその機能がありますか?JavaクラスからJSONスキーマを作成する
答えて
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"
}
}
}
}
}
}
"id"オブジェクトに2つの "タイプ"キーがあります!それが正しいか?説明していただけますか?ありがとう – thermz
私はなぜこれら2つのタイプがあるのか分かりません。私は確認する必要があります。この場合も同様の出力がありますか?なぜ私の答えを更新したのですか?私は 'SchemaFactoryWrapper'から受け取ったスキーマを置いています。 –
それは巨大な間違いです!JSON Schema標準では、単一のプロパティに**複数の**タイプを持たせることができますが、このようにはできません。それは正しいものです:* "type":["number"、 "integer"] *。 同じJSONに2つのキーがあることは、すべての標準に違反しています!キーはユニークです。詳細については、http://www.jsonschema.net/ – thermz
JSONschema4-mapperプロジェクトを見てください。以下の設定で:
SchemaMapper schemaMapper = new SchemaMapper();
JSONObject jsonObject = schemaMapper.toJsonSchema4(Entity.class, true);
System.out.println(jsonObject.toString(4));
あなたはミハルZioberのanswer to this questionで述べたクラスのためにJSONスキーマを以下の取得:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"additionalProperties": false,
"type": "object",
"definitions": {
"Profile": {
"additionalProperties": false,
"type": "object",
"properties": {
"name": {"type": "string"},
"value": {"type": "string"}
}
},
"long": {
"maximum": 9223372036854775807,
"type": "integer",
"minimum": -9223372036854775808
}
},
"properties": {
"profiles": {
"type": "array",
"items": {"$ref": "#/definitions/Profile"}
},
"id": {"$ref": "#/definitions/long"}
}
}
素晴らしいライブラリです.JDK 7では動作し、ベースラインとしては8ではないことを願っています。私たちがJDK8に移行したなら、これを覚えておいてください。 – Joe
- 1. Javaのjsonオブジェクトからスキーマを生成
- 2. C#クラスからJSONスキーマを生成する
- 3. Javaのsqlスキーマからormマッピング・クラスを生成する方法
- 4. XSDスキーマからクラスを生成する
- 5. JSON Javaからの作成
- 6. JSONからMongooseスキーマを作成するには
- 7. jsonスキーマ表現からsparkデータフレームスキーマを作成する
- 8. Ruby onレールモデル(クラス)からJSONスキーマを生成
- 9. JSONスキンシンクからのJSONスキーマの生成
- 10. JSONからJavaクラス
- 11. jsonからreactjsクラスを作成
- 12. eclipseで.xsdスキーマからJavaクラスを生成
- 13. Javaクラス(またはその逆)からXMLスキーマを生成
- 14. オブジェクトとJSONスキーマのリストからJSON文字列を作成するには?
- 15. jsonからjsonスキーマを生成するには
- 16. UML図からJavaクラスを作成
- 17. JSONスキーマを解析してデフォルトのjsonオブジェクトを作成する方法や、Javaクラスを生成する方法はありますか?
- 18. JSONスキーマからJSONデータへ
- 19. jsonスキーマを使用してbigqueryテーブルを作成するためのJavaコード
- 20. JSONデータを変更せずにジェネリックJavaクラスを作成する
- 21. JSONファイルを見てJAVAクラスを作成するには?
- 22. TypscriptクラスからJSONオブジェクトを作成する
- 23. XMLまたはJsonスキーマからJavaドメインクラスを生成することの長所と短所対してJavaクラスを手作業で書くこと
- 24. POJOからJsonスキーマを生成するには
- 25. jsonオブジェクトに基づいてJSONスキーマを作成します
- 26. Java EntityからPostgreSQLにJSONタイプを作成する
- 27. Java。 JSONからThriftオブジェクトを作成する
- 28. JSON(Volley Request)からオブジェクトを作成するJava
- 29. XSDスキーマからXmlSerializerを作成
- 30. JSONを読み込んで新しいJavaクラスを作成するJavaプログラム
何がUIに表示したいですか?私は本当に問題が何かを得ることはありません。 'gson'はJavaクラスをJSONフォーマットに変換できます。これは' gson'が行うものです。 – user1983983