JSON (JavaScript Object Notation) is een lichtgewicht, op tekst gebaseerd, taalonafhankelijk formaat voor gegevensuitwisseling dat door mens en machine gemakkelijk kan worden gelezen en geschreven. JSON kan twee gestructureerde typen vertegenwoordigen: objecten en arrays. Een object is een ongeordende verzameling van nul of meer naam/waarde-paren. Een array is een geordende reeks van nul of meer waarden. De waarden kunnen tekenreeksen, getallen, booleans, null en deze twee gestructureerde typen zijn.
Hieronder ziet u een eenvoudig voorbeeld van Wikipedia dat de JSON-weergave toont van een object dat een persoon beschrijft. Het object heeft tekenreekswaarden voor de voor- en achternaam, een getalswaarde voor de leeftijd, een objectwaarde die het adres van de persoon vertegenwoordigt, en een arraywaarde van telefoonnummerobjecten.
{ '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-verwerking in Java: De Java API voor JSON-verwerking JSON.eenvoudig is een eenvoudige Java-bibliotheek waarmee JSON kan worden geparseerd, gegenereerd, getransformeerd en bevraagd.
Aan de slag : U moet de json-simple-1.1 pot en plaats het in uw CLASSPATH voordat u de onderstaande voorbeeldcodes compileert en uitvoert.
- Raadpleeg voor het importeren van jar in IDE zoals Eclipse hier .
- Als u maven gebruikt, kunt u de volgende maven-link gebruiken https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple/1.1.1
Json-eenvoudige API: Het biedt objectmodellen voor JSON-object- en arraystructuren. Deze JSON-structuren worden weergegeven als objectmodellen met behulp van typen JSONObject En JSONArray . JSONObject biedt een Kaart weergave om toegang te krijgen tot de ongeordende verzameling van nul of meer naam/waarde-paren uit het model. Op dezelfde manier biedt JSONArray een Lijst weergave om toegang te krijgen tot de geordende reeks van nul of meer waarden uit het model.
Schrijf JSON naar een bestand
Laten we een voorbeeld bekijken waarin bovenstaande JSON-gegevens naar een bestand JSONExample.json worden geschreven, met behulp van JSONObject en 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();> >}> }> |
vluchtig java-zoekwoord
>
>
Uitvoer uit bestand 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' }> Opmerking : In JSON is een object een ongeordende set naam/waarde-paren, dus JSONObject behoudt de volgorde van de naam/waarde-paren van een object niet, omdat deze (per definitie) niet significant is. Daarom blijft de volgorde in ons uitvoerbestand niet behouden.
JSON uit een bestand lezen
Laten we een voorbeeld bekijken waarin JSON-gegevens uit het hierboven gemaakte bestand JSONExample.json worden gelezen met behulp van JSONParser, JSONObject en 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());> >}> >}> >}> }> |
>
>
Uitgang:
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>