barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

понедельник, 26 декабря 2011 г.

Работа с JSON в Java

Если в Java требуется работать с форматом JSON (например, на JSP странице для отправки данных JavaScript-скрипту), то можно воспользоваться очень удобной библиотекой - org.json (http://www.json.org/java/). Библиотека позволяет быстро создавать строки  с JSON-данными, парсить строки с JSON-данными в Java-объекты, и даже преобразовывать XML в JSON. Например:

JSONObject myObj = new JSONObject();
myObj.put("key1", "val1");
myObj.put("key2", "val2");
myObj.put("key3", "val3");
JSONArray myArr = new JSONArray();
myArr.put("a");
myArr.put("b");
myArr.put("c");
myObj.put("key4",myArr);
System.out.println(myObj.toString());
выведет:

{"key4":["a","b","c"],"key3":"val3","key2":"val2","key1":"val1"}
И наоборот:
String jsonStr = "{\"key4\":[\"a\",\"b\",\"c\"],\"key3\":\"val3\",\"key2\":\"val2\",\"key1\":\"val1\"}";
JSONObject myParsedObj = new JSONObject(jsonStr);
JSONArray myParsedArr = (JSONArray)myParsedObj.get("key4");
System.out.println(myParsedArr.get(2));
выведет символ "c".
Метод XML.toJSONObject(String) разбирает переданный XML и преобразует его естественным образом в JSON (вложенные теги становятся вложенными объектами, несколько соседних тегов с одним именем превращаются в массив), так, например, вызов:
System.out.println(XML.toJSONObject("<a><b>1</b><b>2</b><b>3</b><c><d>45</d></c></a>").toString());
выдаст:
{"a":{"b":[1,2,3],"c":{"d":45}}}
Также возможно и обратное преобразование.
Для представления NULL в методах put используется JSONObject.NULL.

Объекты JSONObject можно конструировать из любых объектов, поддерживающих интерфейс Map<K,V>, а JSONArray - List<T>.

Комментариев нет:

Отправить комментарий