2017-06-01 190 views
1

我們希望在Java中無鑰匙

{ 
[ 
    { 
    "key": "ABC001", 
    "value": true 
    }, 
    { 
    "key": "ABD12", 
    "value": false 
    }, 
    { 
    "key": "ABC002", 
    "value": true 
    }, 
] 
} 

下面創建一個JSON結構,要實現這一點,我們創建了一個類,並有其內部列表私有財產創建一個JSON。 但是,正在爲這個關鍵values

class Response{ 
private List<Property> values; 
// setter getter for this private property 
} 

輸出是

{ 
values : [ 
{ 
"key": "ABC001", 
"value": true 
}, 
...... 
] 

是否有我們創建一個沒有鑰匙,裏面的{ }陣列的方法嗎?

+0

你正在創建一個類'響應'而不是'List '的json。你可以添加你用來製作json的代碼,以便我們糾正它嗎? – nonzaprej

+0

@nonzaprej我嘗試從列表本身創建json,然後它不在{}內部,它以[{Key,value},{Key,vaue}]形式出現。我們希望它在{[{},{}]} – Suraj

+0

這看起來不像是List - > Array的工作,嘗試使用Map - > Object代替 –

回答

2

不幸的是,你試圖構建的不是一個有效的json。 你可以嘗試驗證它here

例如,使用這個「json」,讀取數組將不可能,因爲它沒有密鑰。

{ 
"foo_key" : "bar", 
[ 
    { 
    "key": "ABC001", 
    "value": true 
    }, 
    { 
    "key": "ABD12", 
    "value": false 
    }, 
    { 
    "key": "ABC002", 
    "value": true 
    }, 
] 
} 

解析JSON像這樣的,你可以得到「酒吧」,因爲它有一個鍵(「foo_key」),但你怎麼能得到陣列?

您使用的代碼對於有效的json已經是正確的。

2

所以,出於某種原因,你想要一個無效的json,這是一個包含在{}之間的數組。這裏是你如何做到這一點(我假設你用google-gson來製作和解析jsons,因爲你沒有包括你的代碼):

// example of the creation of the list 
List<Property> values = new ArrayList<>(); 
values.add(new Property("ABC001", true)); 
values.add(new Property("ABD12", false)); 
values.add(new Property("ABC002", true)); 
// 

Gson gson = new Gson(); 
String json = gson.toJson(values, new TypeToken<List<Property>>() {}.getType()); 
json = "{" + json + "}";// gotta do what you gotta do...