2010-11-03 2 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

Или вы можете обмануть его, добавляя кавычки для ПгвЬЫате ^^ stringSet.add (» \"имя\""); –