logo

Kaip išanalizuoti JSON „Java“.

JSON („JavaScript Object Notation“) yra lengvas, tekstu pagrįstas, nuo kalbos nepriklausomas duomenų mainų formatas, kurį žmonėms ir mašinoms lengva skaityti ir rašyti. JSON gali atstovauti du struktūrinius tipus: objektus ir masyvus. Objektas yra netvarkinga nulio ar daugiau vardo/reikšmių porų rinkinys. Masyvas yra sutvarkyta nulio ar daugiau reikšmių seka. Reikšmės gali būti eilutės, skaičiai, loginiai, nuliniai ir šie du struktūriniai tipai.

Toliau pateikiamas paprastas pavyzdys iš Vikipedijos, rodantis asmenį apibūdinančio objekto JSON vaizdą. Objekte yra vardo ir pavardės eilutės reikšmės, amžiaus reikšmė, objekto reikšmė, nurodanti asmens adresą, ir telefono numerio objektų masyvo reikšmė.

 { '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 apdorojimas Java: „Java“ API, skirta JSON apdorojimui JSON.paprasta yra paprasta „Java“ biblioteka, leidžianti analizuoti, generuoti, transformuoti ir pateikti JSON užklausas.



Darbo pradžia: Jums reikia atsisiųsti json-simple-1.1 jar ir įdėkite jį į savo CLASSPATH prieš sudarydami ir paleisdami toliau pateiktus pavyzdinius kodus.

Json-Simple API: Jame pateikiami JSON objektų ir masyvo struktūrų objektų modeliai. Šios JSON struktūros vaizduojamos kaip objektų modeliai, naudojant tipus JSONObject ir JSONArray . JSONObject suteikia a Žemėlapis rodinį, kad pasiektumėte nesutvarkytą nulio ar daugiau vardo/reikšmių porų rinkinį iš modelio. Panašiai JSONArray suteikia a Sąrašas rodinį, kad pasiektumėte užsakytą nulio ar daugiau reikšmių seką iš modelio.

Įrašykite JSON į failą

Pažiūrėkime pavyzdį, kuris aukščiau JSON duomenis įrašo į failą JSONExample.json, padedant JSONObject ir JSONArray.


užblokuoti kontaktai



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

>

>

Išvestis iš failo 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' }>

Pastaba: JSON sistemoje objektas yra nesutvarkytas pavadinimo / reikšmių porų rinkinys, todėl JSONObject neišsaugo objekto pavadinimo / reikšmės porų tvarkos, nes ji (pagal apibrėžimą) nėra reikšminga. Taigi mūsų išvesties faile tvarka neišsaugoma.

Skaityti JSON iš failo

Pažiūrėkime pavyzdį, kuris nuskaito JSON duomenis iš aukščiau sukurto failo JSONExample.json, padedant JSONParser, JSONObject ir 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());> >}> >}> >}> }>

>

>

Išvestis:

 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>