0

ライブラリに接続しています。私は得るList<List> foodItemsList

foodItemsListJackson を使用してシリアル化するにはどうすればよいですか? これは、GET の処理中に発生しています。

Jackson/Restlet を使用してオブジェクトをシリアル化する方法は理解しましたが、リストについてはわかりません。

ここにある単一のオブジェクトの場合、私は何をしますか

@Get("json")
public Representation represent(Variant variant) throws ResourceException {
    :
    ObjectMapper mapper = new ObjectMapper(); 
    String myFinString = mapper.writeValueAsString(profileSupportedInfo);
    :
    return myFinstring
}

profileSupportedInfo のメンバー データのゲッター セッターは、私が提供するものです。

マッパーオブジェクトを作成する前に、私が行う呼び出しは次のとおりです

List<List> totalfoodItem = someMemberFunc();
ObjectMapper mapper = new ObjectMapper
// my question - how do I serialize totalFoodItem

totalFoodItemJSON での の推奨表現は次のとおりです。

{
 "food":[
       {"name":"apple","img_loc":"123_apple.jpg","energ":210,"food_unit":"1"},
       {"name":"rice","img_loc":"134_rice.jpg","energ":123,"food_unit":"100 gm"},
       :
   ]
}

何が欠けている/理解できないのですか? ありがとうございました

4

1 に答える 1

1

リストを正常にシリアル化するには、リストを配列に変換する必要があります。JVM は、適切な型情報でリストをシリアライズしません (デシリアライズすると、一般的なオブジェクトのリストを取得するだけです)。これは Jackson のせいではありません。ただし、配列をシリアル化する場合は、配列に型を付ける必要があり、配列内のオブジェクトもその型を保持します。

目的の JSON から、必要なのは次のような食品情報を収集できるヘルパー クラスだけのようです。

public class Food {
    private String name;
    private String img_loc;
    private String energ;
    private String food_unit;
    public FoodItem(String name, String value, String energ, String food_unit) {
        this.name = name;
        this.value = values;
        this.energ = energ;
        this.food_unit = food_unit;
    }
}

ここで必要なのは、Food オブジェクトの配列を属性として持つオブジェクトだけです。

public class TotalFoodItem {
    private Food[] food;
    ...
}

そのオブジェクトをシリアル化できます。Jackson はおそらく、目的の JSON とまったく同じように見える JSON を生成しません (このコードを自分で試したことはありません) が、かなり近いはずです。

于 2013-09-11T15:33:35.553 に答える