2016-08-20 15 views
1

POJOクラスがある場合、それを着信JSONにマップできます。私はちょうど私がすべての平凡なjsonの価値を持つことができる方法を見つけるために苦労しています。Jersey REST実装でプレーンなJSONデータを取得するにはどうすればよいですか?

例:

ここ
{ 
    "macro_tasks": [ 
     { 
      "id": "cc5cee68-c1e5-4396-987b-c68559399186", 
      "label": "consi-1", 
      "name": "Consi 1", 
      "project_id": "82d1e463-1bb1-42d3-9adc-9e0d5848d139", 
      "creator_id": null, 
      "created_at": null, 
      "updated_at": null, 
      "meta_data": { 
       "key1": "value1", 
       "key2": 321 
      } 
     } 
    ] 
} 

meta_data内部にその値を変え続けることができますJSONタイプのものです。だから私はいくつかのPOJOクラスとそれをマップすることはできません。

public class MacroTask { 

    private UUID id; 
    private String label; 
    private String name; 

    private UUID projectId; 

    private UUID creatorId; 

    private String createdAt; 

    private String updatedAt; 

    private <some data type> meta_data; 

//getter and setter 

プレーンなJSONデータを取得し、コードでそれを使用してDBにダンプする方法はあります[我々はjsonbタイプをサポートしているのPostgreSQLを使用している。]

答えて

1

私はGeneric JSONタイプのJacksonのJsonNodeを使って解決しました。それは私が聞いたようにいくつかの欠点がありますが、私は試してみています。これまでのところ、それは期待通りに機能しています。私は何か挑戦に直面するか、私はより良い解決策を見つける更新します。

-1

タイプのフィールドとしてmeta_dataを使用しないのはなぜarrayの代わりに?その後、プレーンなJSONを文字列として追加し、この値をバックエンドで使用することができます。

//add json as string value to this field  
private String meta_data; 
+0

このようなエラーが発生しました。「[ソース:org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream @ 75ccff03;で、START_OBJECTトークン からjava.lang.Stringのインスタンスを逆シリアル化できません。 7:column:45](参照チェーン:in.playment.internal.api.dto.MicroTaskDTO ["micro_task"] - > in.playment.internal.api.dto.bean.MicroTask ["meta_data"]) ' – theGamblerRises

+0

この例外の原因となるコードを確認する必要があります。 – MKorsch

0

mapを使用できます。 like

private Map<String, Object> meta_data; 
関連する問題