Nykyään on hyvin yleistä vastaanottaa tietoja JSON-merkkijono muoto XML:n sijaan. Kun käsittelemme JSON-merkkijonoa Javassa, se ei muunna JSON-merkkijono kohtaan JSON-objekti . Mutta käytä JSON-merkkijono ei aina ole hyvä vaihtoehto, koska sitä on vaikea käsitellä. Teknologian muutoksen ja kysynnän vuoksi meidän on muuntaa JSON-merkkijono JSON-objektiksi arvojen hakemiseen. Tämän ongelman ratkaisemiseksi on olemassa joitakin avoimen lähdekoodin kirjastoja, jotka mahdollistavat sen muuntaa JSON-merkkijono JSON-objektiksi. Tässä osiossa olemme selittäneet kuinka muuntaa JSON-merkkijono JSON-objektiksi yksityiskohtaisesti esimerkin kanssa. Ennen kuin siirryt pääaiheeseen, katsotaanpa JSON-muotoa.
jsonStringExample = { 'name' : 'Ronaldo', 'nickname' : 'Sam', 'id' : 312, 'age' : 21, 'height' : 163, 'lastOverScore' : [4, 1, 6, 6, 2, 1] }
Yllä oleva JSON-muoto sisältää kuusi attribuuttia, joista kaksi ensimmäistä ovat merkkijonoja, seuraavat kolme ovat numeerisia ja lopulta JSON-taulukko.
Muunna JSON-merkkijono JSON-objektiksi
Seuraavaa kolmea kirjastoa käytetään muuntamaan merkkijono JSON-objektiksi Javassa:
- Gson Libraryn käyttö
- JSON-Simple Libraryn käyttäminen
- Jacksonin kirjasto
Gson Libraryn käyttö
Gson on avoimen lähdekoodin ja rikas Java Googlen tarjoama kirjasto. Sitä käytetään muuttamaan JSON-merkkijono vastaavaksi JSON-objektiksi ja JSON-objekti JSON-merkkijonoksi. Seuraavaa koodiriviä käytetään JSON-merkkijonon muuntamiseen JSON-objektiksi.
Gson g = new Gson(); Student s = g.fromJson(jsonString, Student.class)
Voimme myös muuntaa JSON-objektin JSON-merkkijonoksi käyttämällä toJson() menetelmä.
String str = g.toJson(p);
JSON-Simple Libraryn käyttäminen
Se on toinen avoimen lähdekoodin Java-kirjasto, jota käytetään JSON-merkkijonon muuntamiseen JSON-objektiksi. JSON-Simple-kirjaston etuna on sen pieni koko. Se on täydellinen, kun muistin rajoitusympäristö on tärkeä. Huomaa, että se on myös yhteensopiva JDK 1.2:n kanssa. Se tarkoittaa, että voimme käyttää sitä vanhan projektin kanssa, joka ei ole Java 5:ssä. Käytämme seuraavia lauseita JSON-merkkijonon muuntamiseen JSON-objektiksi.
JSONParser parser = new JSONParser(); JSONObject json = (JSONObject) parser.parse(stringToParse);
Jackson Libraryn käyttäminen
Jackson-kirjasto on tehokas ja laajalti käytetty Java-kirjasto Java-objektien kartoittamiseen JSON:iin ja päinvastoin. Siinä on runsaasti ominaisuuksia, nopea suorituskyky ja se tukee myös suoratoistoa. Virta voi jäsentää suuren JSON-ulostulon verkkopalveluista lataamatta sitä kokonaan muistiin. Seuraava lause muuntaa opiskelijaa edustavan JSON-merkkijonon opiskelijaa edustavaksi Java-luokiksi.
Student student = new ObjectMapper().readValue(jsonString, Student.class);
Jackson-kirjaston haittana on, että se vaatii vähintään JDK 1.5:n. Siksi, jos kyseessä on vanhempi versio, se ei sovi sinne. Toinen Jackson-kirjaston haittapuoli on, että se ei tue J2ME:tä.
Esimerkki JSON-merkkijonosta JSON-objektiksi
Seuraavassa ohjelmassa olemme muuntaneet JSON-merkkijonon JSON-objektiksi.
JsonStringToJsonObjectExample.java
import org.json.JSONObject; import org.json.JSONArray; public class JsonStringToJsonObjectExample { public static void main(String args[]) { String str = '[{'No':'17','Name':'Andrew'},{'No':'18','Name':'Peter'}, {'No':'19','Name':'Tom'}]'; JSONArray array = new JSONArray(str); for(int i=0; i <array.length(); i++) { jsonobject object="array.getJSONObject(i);" system.out.println(object.getstring('no')); system.out.println(object.getstring('name')); } < pre> <p> <strong>Output:</strong> </p> <pre> 17 Andrew 18 Peter 19 Tom </pre> <p>Let's see another example.</p> <p> <strong>JsonStringToJsonObjectExample2.java</strong> </p> <pre> import org.json.*; public class JsonStringToJsonObjectExample2 { public static void main(String[] args) { String string = '{'name': 'Sam Smith', 'technology': 'Python'}'; JSONObject json = new JSONObject(string); System.out.println(json.toString()); String technology = json.getString('technology'); System.out.println(technology); } } </pre> <p> <strong>Output:</strong> </p> <pre> Sam Smith Python </pre> <hr></array.length();>
Katsotaanpa toinen esimerkki.
JsonStringToJsonObjectExample2.java
10/50
import org.json.*; public class JsonStringToJsonObjectExample2 { public static void main(String[] args) { String string = '{'name': 'Sam Smith', 'technology': 'Python'}'; JSONObject json = new JSONObject(string); System.out.println(json.toString()); String technology = json.getString('technology'); System.out.println(technology); } }
Lähtö:
Sam Smith Python