logo

Jak analyzovat JSON v Javě

JSON (JavaScript Object Notation) je odlehčený, textový, jazykově nezávislý formát pro výměnu dat, který je pro lidi i stroje snadné číst a zapisovat. JSON může představovat dva strukturované typy: objekty a pole. Objekt je neuspořádaná kolekce nula nebo více párů název/hodnota. Pole je uspořádaná sekvence nula nebo více hodnot. Hodnoty mohou být řetězce, čísla, booleovské hodnoty, null a tyto dva strukturované typy.

Níže je jednoduchý příklad z Wikipedie, který ukazuje JSON reprezentaci objektu, který popisuje osobu. Objekt má řetězcové hodnoty pro jméno a příjmení, číselnou hodnotu pro věk, hodnotu objektu představující adresu osoby a hodnotu pole objektů telefonních čísel.



 { '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' } ] }>

Zpracování JSON v Javě: Java API pro zpracování JSON JSON.simple je jednoduchá Java knihovna, která umožňuje analyzovat, generovat, transformovat a dotazovat JSON.

Začínáme: Musíte si stáhnout jar json-simple-1.1 a vložte jej do vaší CLASSPATH před kompilací a spuštěním níže uvedených příkladů kódů.

Json-Simple API: Poskytuje objektové modely pro struktury objektů a polí JSON. Tyto struktury JSON jsou reprezentovány jako objektové modely pomocí typů JSONObject a JSONArray . JSONObject poskytuje a Mapa zobrazení pro přístup k neuspořádané kolekci nula nebo více párů název/hodnota z modelu. Podobně JSONArray poskytuje a Seznam zobrazení pro přístup k uspořádané sekvenci nula nebo více hodnot z modelu.



Zapište JSON do souboru

Podívejme se na příklad, který zapisuje nad data JSON do souboru JSONExample.json s pomocí JSONObject a JSONArray.






// 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();> >}> }>

>

jak odstranit sloupec v postgresql

>

Výstup ze souboru 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' }>

Poznámka : V JSON je objekt neuspořádanou množinou párů název/hodnota, takže JSONObject nezachovává pořadí párů název/hodnota objektu, protože (podle definice) není významné. V našem výstupním souboru tedy není zachováno pořadí.

Přečtěte si JSON ze souboru

Podívejme se na příklad, který načítá JSON data z výše vytvořeného souboru JSONExample.json pomocí JSONParser, JSONObject a 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());> >}> >}> >}> }>

>

>

Výstup:

 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>