2

私の Spring MVC 3.1 プロジェクトには、1 つのオブジェクトが子オブジェクトのリストである属性を持つモデル構造があります。例えば:

public class Person {
    private String name;
    private List<Pet> pets;
}

次に、次のような Pet クラス:

public class Pet {
    private String name;
    private String species;
}

デフォルトのJackson HTTP Converterを使用すると、次のような Person オブジェクトを生成 (および受け入れ) できます。

{
 "name": "Tres",
 "pets": [ {
            "name": "Fido",
            "species": "Dog"
           },
           {
            "name": "Mittens",
            "species": "Cat"
         } ]
}

しかし、私が生成したいのは次のとおりです。

{
 "name": "Tres",
 "pets": {
           "Fido": {
               "species": "Dog"
           },
           "Mittens": {
            "species": "Cat"
           }
         }
}

子オブジェクトを Map に手動で変換する独自のビュー コンバーターを作成できることはわかっていますが、そのための既存の Spring 機能があれば、それを使用したいと思います。また、Jackson の注釈のいくつかを調査してみましたが、私のニーズを満たすものはまだ見つかりませんでした。

また、2 つのオブジェクトが MongoDB に格納され、2 つの異なるコレクションにあるため、pets 属性を Map in Person として格納しないことをお勧めします。そのため、カスタム コンバーターを使用して MongoDB を読み取るか、カスタム コンバーターを使用して HTTP 応答への出力のいずれかで変換を実行する必要があります。

View コンバーターまたは Mongo コンバーターで得られる助けに感謝します!

4

1 に答える 1

0

これが私がすることです...

public class Pet {
   private String name;
   private String species;
   public String getName()
   {
       return name;
   }
   public String getSpecies()
   {
       return species;
   }
}

人の名前をマップのキーとして使用し、マップの値はペットのリストです

Map<String,List> peopleWithPets = new HashMap<String, List>();
peopleWithPets.put("Person Name", new ArrayList<Pet>());

JSONObject json = new JSONObject();
json.putAll( peopleWithPets );
于 2012-09-06T22:28:15.180 に答える