簡體   English   中英

使用Jackson序列化Restlet的列表

[英]serializing List for Restlet using Jackson

我正在連接圖書館。 我得到List<List> foodItemsList

如何使用Jackson序列化foodItemsList 這是在處理GET時發生的。

我已經了解了如何使用Jackson / Restlet序列化一個對象,但是我無法找出它的列表。

對於單個對象,這就是我要做的

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

我提供的是profileSupportedInfo中的成員數據的getter setter。

在創建映射器對象之前,這是我撥打的電話

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

JSON中totalFoodItem的首選表示如下

{
 "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"},
       :
   ]
}

我缺少/不了解什么? 謝謝

恐怕要成功序列化List,您必須將其轉換為數組。 JVM不會使用適當的類型信息來序列化列表(在反序列化時,您只會得到通用對象的列表),這不是傑克遜的錯。 但是,如果序列化數組,則必須鍵入該數組,並且數組內的對象也將保留其類型。

從所需的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;
    ...
}

您可以序列化該對象。 傑克遜可能不會產生看起來完全像您想要的JSON的JSON(我自己沒有嘗試過此代碼),但它應該非常接近。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM