2010-11-03 51 views
0

我完全錯過了什麼嗎?爲什麼我無法擺脫我放入的東西?問題與JSONValue

Set<String> stringSet = new LinkedHashSet<String>(); 
stringSet.add("firstName"); 
Map<String,Object> payload = new LinkedHashMap<String,Object>(); 
payload.put("properties", stringSet); 

String sPayload = JSONValue.toJSONString(payload); 
payload = (Map<String, Object>) JSONValue.parse(sPayload); // <-- payload == NULL 

回答

2

這是一個錯誤json-simple(如1.1版本) - 它不知道如何將Set轉換成JSON數組,所以它最終只是要求它toString()和逐字插入結果。

其結果是,你的JSON看起來像:

{"properties":[firstName]} 

導致JSONValue.parse()嗆上加引號firstName

如果使用List它正常工作:

{"properties":["firstName"]} 

有關於這一問題的懸而未決的問題:http://code.google.com/p/json-simple/issues/detail?id=23

+0

或者你也可以通過添加與firstName ^^ stringSet.add報價誘騙(」 \「名字\」」); – 2010-11-03 18:35:43