我正在學習我的第一個Java Json解析器librairie,她是Jackson JSON。如何使用Jackson JSON將K/V的json數組轉換爲Java HashMap
我試圖轉換爲一個Java對象的ID/NOTE列表到一個HashMap列表。
的json輸入這個樣子
var basketList = [
{
"name": "Basket 1",
"productList": {
//Id Item to incremente for ordering
"14":{
// quantity to be add to this Id
"quantity":6,
"note": "Thing"
},
"15":{
"quantity":4,
"note": "Another Thing"
},
}
},
{
"name": "Basket 2",
"productList": {
"14":{
"quantity": 16,
"note": "Thing"
},
"15":{
"quantity":2,
"note": "Another Thing"
},
"17":{
"quantity":7,
"note": "Some Thing"
}
}
}
]
我的產品名單是動態的,我不希望創建一個Java對象,
我的第一個想法是在java中構建一個新的productList並將每個數量添加到正確的產品ID。
我找不到任何例子在線上如何做到這一點,我想用ObjectMapper()。readTree(),並與JsonNode
玩我不能讓它工作,任何幫助將理解
我已經這樣做了,但我卡在如何讓我的最後JsonNode的鍵名:
String JSON = myJavaItem.getJson();
JsonNode JavaItem = mapper.readTree(JSON);
List<Product> listIwantCreate = BuildATestOrderList(JavaItem);
public static List<Product> BuildATestOrderList(JsonNode node)
{
List<Product> productList = new ArrayList<Product>();
JsonNode cabinetList = node.path("cabinet");
if (!cabinetList.isMissingNode())
{
for (JsonNode cabinet : cabinetList)
{
JsonNode basketList= cabinet.path("basketList");
if (!basketList.isMissingNode())
{
for (JsonNode item : productList)
{
// I need to populate here
Integer idItem; // how to get the key of current item ?
Integer qtity = item.path("quantity").getIntValue();
Product p = new Product();
p.setIdItem(idItem);
p.setQuantity(qtity);
productList.add(p);
}
}
}
}
return productList ;
}
您的代碼不編譯。第二個foreach在'productList'上,它是'Product'而不是'JsonNode'的列表。此外,你的json不包含「內閣」領域,所以你的例子將無法正常工作。 – 2013-05-14 15:08:32