JSON (JavaScript Object Notation) je lahek, na besedilu temelječ in od jezika neodvisen format za izmenjavo podatkov, ki je enostaven za branje in pisanje za ljudi in stroje. JSON lahko predstavlja dve strukturirani vrsti: objekte in nize. Objekt je neurejena zbirka nič ali več parov ime/vrednost. Niz je urejeno zaporedje nič ali več vrednosti. Vrednosti so lahko nizi, števila, logične vrednosti, nič in ti dve strukturirani vrsti.
Spodaj je preprost primer iz Wikipedije, ki prikazuje JSON predstavitev predmeta, ki opisuje osebo. Objekt ima vrednosti niza za ime in priimek, vrednost števila za starost, vrednost objekta, ki predstavlja naslov osebe, in vrednost niza objektov telefonske številke.
{ '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' } ] }> Obdelava JSON v Javi: Java API za obdelavo JSON JSON.simple je preprosta knjižnica Java, ki omogoča razčlenjevanje, ustvarjanje, preoblikovanje in poizvedovanje JSON.
prenesite video iz youtube vlc
Kako začeti: Prenesti morate json-simple-1.1 jar in ga postavite v svoj CLASSPATH, preden prevedete in zaženete spodnje primere kod.
- Za uvoz jar v IDE, kot je eclipse, glejte tukaj .
- Če uporabljate maven, lahko uporabite naslednjo povezavo maven https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple/1.1.1
Json-Simple API: Zagotavlja objektne modele za objekte in matrične strukture JSON. Te strukture JSON so predstavljene kot objektni modeli z uporabo tipov JSONObject in JSONArray . JSONObject zagotavlja a Zemljevid za dostop do neurejene zbirke nič ali več parov ime/vrednost iz modela. Podobno JSONArray zagotavlja a Seznam za dostop do urejenega zaporedja nič ali več vrednosti iz modela.
Zapišite JSON v datoteko
Oglejmo si primer, ki zapisuje zgornje podatke JSON v datoteko JSONExample.json s pomočjo JSONObject in 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();> >}> }> |
oblikovalski vzorci v Javi
>
>
Izhod iz datoteke 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' }> Opomba : V JSON je predmet neurejen nabor parov ime/vrednost, zato JSONObject ne ohranja vrstnega reda parov ime/vrednost predmeta, saj (po definiciji) ni pomemben. Zato v naši izhodni datoteki vrstni red ni ohranjen.
Branje JSON iz datoteke
Oglejmo si primer, ki bere podatke JSON iz zgoraj ustvarjene datoteke JSONExample.json s pomočjo JSONParser, JSONObject in 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());> >}> >}> >}> }> |
>
brezplačno proti brezplačnim
>
Izhod:
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>