Simple JSON - это фреймворк JAVA JSON, разработанная Google, на основе протокола Apache.
Домашняя страница Json-Simple: //www.vevb.com/softs/455885.html
Загруженный файл: json_simple.jar
Пример 1: очень удобный способ использования jsonValue
System.out.println ("============================================================================================================= obj = jsonvalue.parse (s); obj2 = (jsonObject) Array.get (1); S = "{}";JsonObject унаследовает карту, в то время как JSonarray Fanroites List, так что вы можете использовать стандартный способ карты и списка для использования jsonObject и jsonarray.
JsonValue может использовать массивы или объекты.
Пример 2: Быстрый путь, используя jsonParser
JsonParser parser = new jsonParser (); System.out.println ("========================================================================================================================= Array = (jsonarray) obj; System.out.println ("===== Field /" 1 /"=========================================================================================== S = "[5,]";Использование JSonParser требует поймать исключение.
Пример 3: Обработка исключений
String jsontext = "[[null, 123.45,/" a // tb c/"]}, true"; JsonParser parser = new jsonParser (); try {parser.parse (jsontext); } catch (parseException pe) {system.out.println ("position:" + pe.getPosition ()); System.out.println (PE); }Результаты исполнения:
Положение: 25 Неожиданный токен Правая скоба (}) в позиции 25.
Пример 4: Контейнерная фабрика
Используйте класс ContainerFactory, чтобы создать контейнерную фабрику.
String jsonText = "{/" First/": 123,/" Second/": [4, 5, 6],/" third/": 789}"; JsonParser parser = new jsonParser (); ContainerFactory containerFactory = new ContainerFactory () {public List creatarrayContainer () {return new LinkedList (); } public map createObjectContainer () {return new LinkedHashMap (); }}; try {map json = (map) parser.parse (jsontext, containerFactory); Iterator iter = json.entryset (). Iterator (); System.out.println ("== iterate result =="); while (iter.hasnext ()) {map.entry entry = (map.entry) iter.next (); System.out.println (entry.getKey () + "=>" + entry.getValue ()); } System.out.println ("== tojSonstring () =="); System.out.println (jsonvalue.tojsonstring (json)); } catch (parseException pe) {system.out.println (pe); }Результаты следующие:
== iterate result == First => 123 Second => [4,5,6] третья => 789 == tojSonstring () == {"First": 123, "Second": [4,5,6], "третий": 789} Если вы не используете контейнерные фабрики, Simple-Json использует JsonObject и JSonarray по умолчанию. Пример 5: Остановка контента SAX COMPLACE SimpleJson Рекомендует простой метод обработки контента Sax Sax для обработки текстовых потоков. Пользователь может оставаться в любой точке в потоке логического ввода, затем обрабатывать другую логику, а затем продолжить с предыдущей обработкой. Не ждите обработки всего потока. Вот пример. KeyFinder.java: Класс KeyFinder реализует ContentHandler {value Private Object; Частный логический нашел = false; Частный логический конец = false; частный ключ строки; частная строка Matchkey; public void setMatchkey (String Matchkey) {this.matchkey = matchkey; } public Object getValue () {return Value; } public boolean isend () {return end; } public void setFound (boolean найдено) {this.found = найдено; } public boolean isFound () {return найдено; } public void startJson () бросает parseException, ioException {sucd = false; end = false; } public void endjson () бросает parseexception, ioException {end = true; } public boolean primitive (значение объекта) бросает parseexception, ioexception {if (key! = null) {if (key.equals (matchkey)) {sucd = true; this.value = значение; key = null; вернуть ложь; }} вернуть true; } public boolean startArray () бросает parseexception, ioException {return true; } public boolean startObject () бросает parseException, ioException {return true; } public boolean startObjectEntry (String Key) Throws ParseException, ioException {this.key = key; вернуть истину; } public boolean endarray () бросает parseexception, ioexception {return false; } public boolean endObject () бросает parseexception, ioException {return true; } public boolean endobjectentry () бросает parseexception, ioexception {return true; }} Главная логика: String jsontext = "{/" first/": 123,/" second/": [{/" k1/": {/" id/":/" id1/"}}, 4, 5, 6, {/" id/": 123}],/" третий/": 789,/" id/": null}"; Jsonparser parser = newjsonparser (); KeyFinder Finder = newKeyFinder (); finder.setmatchkey ("id"); try {while (! finder.isend ()) {parser.parse (jsontext, finder, true); if (finder.isfound ()) {finder.setFound (false); System.out.println («найденный идентификатор:»); System.out.println (finder.getValue ()); }}} catch (parseexception pe) {pe.printstacktrace (); } Результаты исполнения:Найден идентификатор: ID1 Найден ID: 123 Найден идентификатор: NULLПример 6: Весь график объекта анализируется с использованием саксоровочного
Трансформатор класса реализует ContentHandler {Private Stack ValueStack; public Object getResult () {if (valueStack == null || valuestack.size () == 0) return null; return valuestack.peek (); } public boolean endarray () бросает parseexception, ioexception {trackback (); вернуть истину; } public void endjson () Throws ParseException, ioException {} public boolean endObject () throws parseexception, ioexception {trackback (); вернуть истину; } public boolean endobjectentry () бросает parseexception, ioexception {object value = valueStack.pop (); Object Key = valueStack.pop (); Map parent = (map) valuestack.peek (); parent.put (ключ, значение); вернуть истину; } private void trackback () {if (valueStack.size ()> 1) {value = valueStack.pop (); Object prev = valueStack.peek (); if (prevanceOf string) {valueStack.push (value); } / else {object prev = valuestack.peek (); if (prev exactionof list) {list array = (list) prev; array.add (значение); } else {valueStack.push (value); }}} public boolean primitive (значение объекта) бросает parseexception, ioexception {emencevalue (value); вернуть истину; } public boolean startArray () бросает parseexception, ioException {list array = new jsonarray (); потребление (массив); valuestack.push (массив); вернуть истину; } public void startJson () Throws ParseException, ioException {valuEStack = new Stack (); } public boolean startObject () бросает parseException, ioException {map object = new jsonObject (); потребительское свидетельство (объект); valuestack.push (объект); вернуть истину; } public boolean startObjectEntry (String Key) Throws ParseException, ioException {valueStack.push (key); вернуть истину; }} Основная логика метода:String jsonstring = <input json text>; Значение объекта = null; JsonParser parser = new jsonParser (); Трансформатор Transformer = новый трансформатор (); parser.parse (JSonstring, Transformer); value = transformer.getResult ();Результаты исполнения:
String jsonstring = <input json text>; Значение объекта = null; Jsonparser parser = newjsonparser (); value = parser.parse (jsonstring);ПРИМЕЧАНИЕ. JsonPauser не является потоком.
JSON_ENCODE - JSON Кодирование переменных.
Описание: String json_encode ($ value), возвращает форму JSON значения.
Параметры: значение, которое нужно кодировать, может быть любым типом данных, за исключением типа ресурса
Эта функция может принять только кодированные данные UTF-8 (перевод Примечание: относится к данным типа символа/строки)
Возвращаемое значение: если кодировка успешна, будет возвращена строка, представленная в JSON.