4

私は直接私の質問から始め、後でより多くの背景情報を提供します。

シンプル: 私は a を持っていてLinkedHashMap<String, String>、それは特定のオブジェクトを表しています。それをそのオブジェクトに変換する最良の方法は何ですか?

ジェネリックを使用してすべての要素を取得し、フィールドを設定できることは知っていますが、ネストされたオブジェクトとは何ですか?

背景: JSON オブジェクトを使用する JAX-RS サービスがあります。私のサービスはさまざまな種類のオブジェクトを処理し、単にインターフェイスを表します。そのため、どのオブジェクトが外部から来ているのか、どのプログラムが私のサービスを使用しているのかわかりません。

実行時に、インターフェースを介して情報を取得し@Injectます。JAX-RS サービスは、クライアントからのデータを型指定されていないオブジェクトに格納し、それが自動的に行われます (これがLinkedHashMap<String, String>です)。

私のインターフェースでは、次のようなメソッドを提供したいと思いsetObjectます。パラメーターはそのタイプのオブジェクトでなければなりません。LinkedHashMap<String, String>このすべてを処理できますが、オブジェクトをその特定のオブジェクトに変換する部分は処理できません。

構造の例: ターゲット オブジェクトはそれを好む可能性があります

public class Document {
    private String title;
    private String id;
    private int version;
}

LinkedHashMap見た目はそう

{title=some title, id=1, version=1}
4

2 に答える 2

3

2つのクラスを作成できます

@XmlAccessorType(XmlAccessType.FIELD) 
public class Document {
    @XmlElement
    private String title;
    @XmlElement
    private String id;
    @XmlElement
    private int version;
}  


@XmlAccessorType(XmlAccessType.FIELD)
public class MapJson {
    @XmlElement
    private LinkedHashMap<String, String> documents; 
}  


Jackson を使用してオブジェクトをJSONに変換します

new org.codehaus.jackson.map.ObjectMapper().writeValueAsString(instanceofMapJson);  

Google JSON

new com.google.gson.Gson().toJson(instanceofMapJson);  

PS。Google json を使用すると、クラスから xml 注釈を削除できます

于 2012-08-24T10:03:52.777 に答える
1

リフレクションは、一般的な未知のオブジェクトのプロパティを設定する唯一の方法です。
必要なものはすべてドキュメントで見つけることができます。

于 2012-08-24T08:42:19.077 に答える