Java >> Java tutorial >  >> Tag >> Json

Sådan parses JSON i Java

Før vi graver ind i, hvordan man parser JSON i Java, lad os først kort forstå, hvad JSON er, og hvad er java. For det første er Java et objektorienteret programmeringssprog. Det kan bruges til at udvikle desktop-, android- og webapplikationer. JSON er (Javascript Object Notation). Det afhænger af en delmængde af Javascript.JSON er sproguafhængig, tekstbaseret og let. Det bruges til at mennesker og maskiner kan læse og skrive; derfor er JSON vigtig, når du overfører data over nettet.

JSON kan have to strukturer:
1. Objekt – en samling af uordnede nul eller flere navne/værdipar
2. Arrays – en ordnet samling/sekvens af nul eller værdier

Vi kan spørge os selv, hvorfor har vi brug for JSON? Okay, der er forskellige fordele ved at bruge JSON. For det første er det selvbeskrivende. Det, der gør den selvbeskrivende, er dens hierarkiske struktur, der gør dens kode let forståelig uden meget besvær. For det andet er dens kompakthed i størrelse stor. Store filer i XML kan være små, når de konverteres til JSON. Sidst, men ikke mindst, er dens enkelhed. Det er ligetil at se eller redigere, da det også understøtter online JSON-værktøjer.

Vi kan parse Json i java ved hjælp af en række forskellige biblioteker. Lad os diskutere de 3 mest almindelige biblioteker at bruge.

  1. org.json
  2. Gson
  3. JSON PATH
  4. Jackson

Parse JSON i Java ved hjælp af org.json

Lad os parse denne JSON, det er et eksempel, der viser, hvordan man henter værdier for navn og post_id.

{
    "pageInfo": {
            "pageName": "Homepage",     
    },
    "posts": [
            {
                "post_id": "123456789",
                "author_name": "Moses Njoroge",
                "post_title": "How to parse JSON in Java",  
            }
    ]
}

Trin:

Tilføjelse af biblioteket som en afhængighed. Du kan downloade jar org.json-biblioteket fra Mvn Repository.

For at tilføje Jar-filen til dit projekt. Åbn projektet. I vores tilfælde skal vi bruge Netbeans IDE. Højreklik på tilføj vælg under mappen Biblioteker på tilføj jar/fil. Naviger til det sted, hvor krukken er placeret, og klik på ok.

Dette vil tillade dig at bruge nedenstående afhængigheder uden fejl.

import org.json.JSONArray;
import org.json.JSONObject;

Konverter JSON-strengen til JSON-objekt ved hjælp af jsonobject-klassen.

JSONObject obj = new JSONObject(json);
String name = obj.getString("name");
int age = obj.getString("age");

Til sidst får viJSONObject-metoden.

JSONArray arr = obj.getJSONArray("posts");
  for (int i = 0; i < arr.length(); i++) {
   String post_id = arr.getJSONObject(i).getString("post_id");
            System.out.println(post_id);
    }

Nedenfor er den komplette java-kode.

import org.json.JSONArray;
import org.json.JSONObject;

public class ParseJSONOrg {
    static String json = "";
    public static void main(String[] args) {
       JSONObject object = new JSONObject(json);
       String name = object.getString("name");
       
        System.out.println(name);

        JSONArray arr = object.getJSONArray("posts");
        for (int i = 0; i < arr.length(); i++) {
            String post_id = arr.getJSONObject(i).getString("post_id");
            System.out.println(post_id);
        }
    }
}

Parse JSON i Java ved hjælp af GSON

Gson er baseret på et open source-bibliotek udviklet af Google. Den er enkel og nem at bruge, hvilket giver den en fordel i forhold til andre metoder. Da den er udviklet og vedligeholdt af Google, er dens ydeevne bedre. Download GSON jar-filen fra Marven Repository.

De tilføjede GSON-afhængigheder omfatter:

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

Jeg vil demonstrere, hvordan man konverterer en JSON-streng til JSON-objekt ved hjælp af to datatyper, der er et heltal og en streng. For at konvertere JSON-strengen skal du skrive:

Gson gson = new Gson();
User p = gson.fromJson(jsonString, User.class);

Hvor JSON er JSON-strengen, og User.class er modelklassen, der repræsenterer Java-objektklassen. På samme måde er det nemt at konvertere JSON-objektet tilbage til JSON-strengen. Bare skriv koden nedenfor:

Gson gson = new Gson();
String str = gson.toJson(json);

Indtastning:

JSON String : {
  "name": "mose",
  "enail": "[email protected]",
  "phone": 123456789}

Output:

Java Object : User [name=Mose, [email protected], phone=12345670]
package ParseJSON;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class ParseJSONGson 
{
    static String json = " ";
    public static void main(String[] args) 
    {
      JsonObject gson = new JsonParser().parse(json).getAsJsonObject();

        String name = gson.toJson(json);
        System.out.println(name);

        JsonArray arr = gson.getAsJsonArray("posts");
        for (int i = 0; i < arr.size(); i++) {
            String post_id = arr.get(i).getAsJsonObject().get("post_id").getAsString();
            System.out.println(post_id);
        } 
  } 
}

Parser streng til JSON ved hjælp af Jackson i Java

Jackson Library er en af ​​de meget brugte JSON-konvertere på grund af dens hurtige hastighed. Det kan understøtte parsing af store JSON-data, såsom den, der bruges i streaming. Derfor er dette bibliotek hukommelsesvenligt. På trods af sin effektivitet understøtter den kun JDK 1.5 og nyere og understøtter heller ikke J2ME-projekter. Derfor er den velegnet til at udvikle store projekter ved at udvikle webtjenester og Android-projekter, da den er letvægts.

Det første trin er at tilføje afhængigheden i din POM.xml. Du skal blot tilføje afhængigheden i filen pom.xml, som vist nedenfor. Hvis du bruger IntelliJ IDEA, skal du blot vælge projektstruktur fra filmenuen. Vælg biblioteket, klik derefter på plusknappen og søg efter Jackson-xc.

<dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-xc</artifactId>
      <version>1.9.11</version>
</dependency>

Jeg vil bruge Jackson-biblioteket som vores JSON-streng til JSON-objektkonverter og omvendt.

User mose = new ObjectMapper().readValue(json, User.class);

Nedenstående kode konverterer JSON-streng til JSON-objekt.

Driver converter = new Driver();
String json = "{\n" +
       "    \"name\": \"Mose\",\n" +
       "    \"email\": \"[email protected]\",\n" +
       "    \"phone\": 12345670}";
converter.fromJson(json);

Output

Java Object : User [name=Mose, [email protected], phone=12345670]

For at parse JSON-objekt tilbage til JSON-strengen skal du blot bruge koden nedenfor

//Object to JSON in String
ObjectMapper mapper = new ObjectMapper();
String jsonInString = mapper.writeValueAsString(user);

Parsing af streng til JSON ved hjælp af JSON-Simple i Java

Dette bibliotek er open source. Den er også lille og bruger en lille hukommelse sammenlignet med andre biblioteker. Det er derfor almindeligt brugt i Android- og J2ME-projekter. En af dens bedste fordele er, at den kan understøtte meget gamle projekter før JDK 1.2. Det er nemt at skrive koden og bruge den på samme tid.

Ligesom ovenstående trin er det afgørende at starte med at tilføje JSON-afhængigheden, før du begynder at bruge den. Som beskrevet i parsingstrengen til JSON-objekt ved hjælp af Gson, følg den samme procedure og tilføj denne afhængighed. Eller download den og føj JAR til projektet som normalt, så er du klar til at gå.

For at parse JSON-streng til JSON-objekt skal du blot bruge koden nedenfor:

JSONParser parser = new JSONParser();
JSONObject json = (User.class) parser.parse(jsonString);

Her er jsonString JSON-strengen, som du skal parse.

Givet det samme input som fra ovenstående samme eksempel, er output stadig det samme.

Parse JSON i Java ved hjælp af JsonPATH

Denne metode inkluderer brug af en XPath til SON, som er JsonPATH. Endnu en gang skal du downloade dens afhængighed - Maven Repository. Lad os nu se på, hvordan man videregiver JSONPath.

Afhængighed:

import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.JsonPath;

public class ParseJSONPath {
    static String json = " ";
    public static void main(String[] args) {
        String name = JsonPath.read(json, "$.pageInfo.name");
        System.out.println(pagenameame);

        Integer posts = JsonPath.read(json, "$.posts.length()");

        for(int i=0; i < posts; i++) {
            String post_id = JsonPath.read(json, "$.posts[" + i + "].post_id");
            System.out.println(post_id);
        }
    }
}

Konklusion

Fra ovenstående diskussion er det tydeligt, at der er forskellige måder at parse JSON på i Java. Vi har set nogle fordele ved at bruge den ene metode frem for den anden. Jackson-biblioteket er det bedste af alt, og det kan ses som det bedste, fordi det mest bruges i produktionskoder på grund af dets enkelhed og hukommelseseffektivitet, og det kan analysere enorme mængder data. Denne egenskab giver det en fordel i at bygge webtjenester frem for andre biblioteker. JSON-biblioteket viser sig også at være effektivt i hukommelsen og bredt understøttet. Endelig kan alle metoder få arbejdet gjort. Det afhænger kun af dine krav som udvikler eller organisation.


Java tag