JSON (JavaScript Object Notation) — це легкий, текстовий, незалежний від мови формат обміну даними, який легко читати та записувати як людьми, так і машинами. JSON може представляти два структурованих типи: об’єкти та масиви. Об’єкт — це невпорядкована сукупність нуля або більше пар ім’я/значення. Масив — це впорядкована послідовність нуля чи більше значень. Значеннями можуть бути рядки, числа, логічні значення, null і ці два структуровані типи.
Нижче наведено простий приклад із Вікіпедії, який показує JSON-представлення об’єкта, який описує людину. Об’єкт містить рядкові значення для імені та прізвища, числове значення для віку, значення об’єкта, що представляє адресу особи, і значення масиву об’єктів номера телефону.
{ 'firstName': 'John', 'lastName': 'Smith', 'age': 25, 'address': { 'streetAddress': '21 2nd Street', 'city': 'New York', 'state': 'NY', 'postalCode': 10021 }, 'phoneNumbers': [ { 'type': 'home', 'number': '212 555-1234' }, { 'type': 'fax', 'number': '646 555-4567' } ] }> Обробка JSON у Java: Java API для обробки JSON JSON.simple це проста бібліотека Java, яка дозволяє аналізувати, генерувати, перетворювати та надсилати запити JSON.
Починаємо : Вам потрібно завантажити json-simple-1.1 jar і помістіть його у свій CLASSPATH перед компіляцією та запуском наведених нижче прикладів кодів.
- Щоб імпортувати jar в IDE, як-от Eclipse, див тут .
- Якщо ви використовуєте maven, ви можете скористатися наступним посиланням maven https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple/1.1.1
Json-Simple API: Він надає об’єктні моделі для об’єктів JSON і структур масивів. Ці структури JSON представлені як об’єктні моделі за допомогою типів JSONObject і Масив JSON . JSONObject надає a Карта подання, щоб отримати доступ до невпорядкованої колекції нуля або більше пар ім’я/значення з моделі. Так само JSONArray надає a Список подання для доступу до впорядкованої послідовності нуля чи більше значень із моделі.
Записати JSON у файл
Давайте подивимося приклад, який записує дані JSON у файл JSONExample.json за допомогою JSONObject і JSONArray.
рядкові методи в java
// Java program for write JSON to a file> > import> java.io.FileNotFoundException;> import> java.io.PrintWriter;> import> java.util.LinkedHashMap;> import> java.util.Map;> import> org.json.simple.JSONArray;> import> org.json.simple.JSONObject;> > public> class> JSONWriteExample> {> >public> static> void> main(String[] args)>throws> FileNotFoundException> >{> >// creating JSONObject> >JSONObject jo =>new> JSONObject();> > >// putting data to JSONObject> >jo.put(>'firstName'>,>'John'>);> >jo.put(>'lastName'>,>'Smith'>);> >jo.put(>'age'>,>25>);> > >// for address data, first create LinkedHashMap> >Map m =>new> LinkedHashMap(>4>);> >m.put(>'streetAddress'>,>'21 2nd Street'>);> >m.put(>'city'>,>'New York'>);> >m.put(>'state'>,>'NY'>);> >m.put(>'postalCode'>,>10021>);> > >// putting address to JSONObject> >jo.put(>'address'>, m);> > >// for phone numbers, first create JSONArray> >JSONArray ja =>new> JSONArray();> > >m =>new> LinkedHashMap(>2>);> >m.put(>'type'>,>'home'>);> >m.put(>'number'>,>'212 555-1234'>);> > >// adding map to list> >ja.add(m);> > >m =>new> LinkedHashMap(>2>);> >m.put(>'type'>,>'fax'>);> >m.put(>'number'>,>'212 555-1234'>);> > >// adding map to list> >ja.add(m);> > >// putting phoneNumbers to JSONObject> >jo.put(>'phoneNumbers'>, ja);> > >// writing JSON to file:'JSONExample.json' in cwd> >PrintWriter pw =>new> PrintWriter(>'JSONExample.json'>);> >pw.write(jo.toJSONString());> > >pw.flush();> >pw.close();> >}> }> |
>
>
Вихід із файлу JSONExample.json:
{ 'lastName':'Smith', 'address':{ 'streetAddress':'21 2nd Street', 'city':'New York', 'state':'NY', 'postalCode':10021 }, 'age':25, 'phoneNumbers':[ { 'type':'home', 'number':'212 555-1234' }, { 'type':'fax', 'number':'212 555-1234' } ], 'firstName':'John' }> Примітка : У JSON об’єкт — це невпорядкований набір пар ім’я/значення, тому JSONObject не зберігає порядок пар ім’я/значення об’єкта, оскільки він (за визначенням) не є значущим. Тому в нашому вихідному файлі порядок не зберігається.
Читання JSON із файлу
Давайте подивимося приклад, який читає дані JSON зі створеного вище файлу JSONExample.json за допомогою JSONParser, JSONObject і JSONArray.
наташа далал
// Java program to read JSON from a file> > import> java.io.FileReader;> import> java.util.Iterator;> import> java.util.Map;> > import> org.json.simple.JSONArray;> import> org.json.simple.JSONObject;> import> org.json.simple.parser.*;> > public> class> JSONReadExample> {> >public> static> void> main(String[] args)>throws> Exception> >{> >// parsing file 'JSONExample.json'> >Object obj =>new> JSONParser().parse(>new> FileReader(>'JSONExample.json'>));> > >// typecasting obj to JSONObject> >JSONObject jo = (JSONObject) obj;> > >// getting firstName and lastName> >String firstName = (String) jo.get(>'firstName'>);> >String lastName = (String) jo.get(>'lastName'>);> > >System.out.println(firstName);> >System.out.println(lastName);> > >// getting age> >long> age = (>long>) jo.get(>'age'>);> >System.out.println(age);> > >// getting address> >Map address = ((Map)jo.get(>'address'>));> > >// iterating address Map> >Iterator itr1 = address.entrySet().iterator();> >while> (itr1.hasNext()) {> >Map.Entry pair = itr1.next();> >System.out.println(pair.getKey() +>' : '> + pair.getValue());> >}> > >// getting phoneNumbers> >JSONArray ja = (JSONArray) jo.get(>'phoneNumbers'>);> > >// iterating phoneNumbers> >Iterator itr2 = ja.iterator();> > >while> (itr2.hasNext())> >{> >itr1 = ((Map) itr2.next()).entrySet().iterator();> >while> (itr1.hasNext()) {> >Map.Entry pair = itr1.next();> >System.out.println(pair.getKey() +>' : '> + pair.getValue());> >}> >}> >}> }> |
>
>
Вихід:
John Smith 25 streetAddress : 21 2nd Street postalCode : 10021 state : NY city : New York number : 212 555-1234 type : home number : 212 555-1234 type : fax>