2017-11-16 7 views
0

私は次の形式でJSONデータを返す特定のAPI使用しています:このJSONでマッピングJSON自動的に - 設計問題

entities { 
    entity#1 { [property#1:value, property#2:value] }, 
    entity#2 { [property#3:value, property#4:value] } 
} 

実体が手動で定義され、各エンティティは、ユニークな特性を持つことができることを意味。この種のデータを解析する最良の方法は何ですか?現時点で

、私は、しかし、私が定義するエンティティの量が十分に100

を超えることができ、私はAPIで定義した各エンティティの一意のクラスを作ってるんだ作成するには、Javaの方法はあります共有プロパティを事前に定義しておき、実行時にその同じクラスにプロパティを追加する単一のクラス?

+0

Javaは、厳密に型指定された言語であり、動的プロパティを禁止します。あなたはすべてのプロパティ( 'List')を保持し、メソッドを介してアクセスできるロジックを作成することでちょっと騙すことができます。 – Lino

+0

すべてのプロパティを持つ一意のクラスを持ち、' ​​@JsonIgnoreProperties(ignoreUnknown = true) 'を使用して避けることができますJSON – canillas

+0

(Javaのランタイム環境では、任意の数の*それぞれに1つの値を関連付ける*の方法は、[Map ](https://docs.oracle.com/javase/8/docs/api)に記載されていません。 /java/util/Map.html#method.summary)) – greybeard

答えて

0

あなたのエンティティは、おそらく共通のプロパティのいくつかを共有しており、他のものとは異なります。その場合、適切な妥協策は、クラスフィールドとして共通のプロパティを含むクラスを持つことです。残りは、キーと値のペアをマップに格納する必要があります。これにより、100以上のわずかに異なるクラスを持たずに、少なくともいくつかのクラス構造を持つことができます。直列化復元の詳細については

private String someProperty; 
private boolean someOtherCommonProperty; 
... 

private Map<String, Object> allTheOtherProperties; 

のような何かが、この記事をチェックしてください。 http://www.baeldung.com/jackson-map

具体4.2。マップの逆シリアル化

+0

おそらく 'Map 'はより良いでしょう – Lino

+0

ありがとう、更新されました。 –

+0

JSONクラスから自動的に(マップ部分を意味する)この種のマッピングを行うことができるJava実装がありますか? – i712345

関連する問題