Перейти к контенту

Java json parser — пример работы парсера

В этом посте мы разберем подробный пример парсера Java JSON. JSON(JavaScript Object Notation) — это простой текстовый формат, который облегчает чтение и запись. Это широко используемый формат обмена данными, поскольку его анализ и генерация просты в использовании.

В языке Java есть несколько способов обработки JSON. В этом примере мы собираемся использовать общий набор инструментов — JSON.simple — и узнаем, как анализировать каждый тип файла.

 

jsonobject

Установка среды

Перед началом написания кода программы, мы должны установить подходящую среду для компилятора, чтобы распознавать классы JSON. Если необходимо построить проект с помощью Maven, нужно добавить следующую запись в pom.xml:

 

    com.googlecode.json-simple
    json-simple
    1.1


Иначе необходимо добавить версию json-simple-1.1.1.jar в CLASSPATH.

Пример парсинга JSON

Разберем, как мы можем проанализировать и произвести чтение файла json, для этого нужно создать наш собственный файл, он будет называться jsonTestFile.json. Он имеет следующую структуру:

jsonTestFile.json:
{
  "id": 1,
  "firstname": "Katerina",
  "languages": [
    {
      "lang": "en",
      "knowledge": "proficient"
    },
    {
      "lang": "fr",
      "knowledge": "advanced"
    }
  ],
  "job": {
    "site": "www.hr-vector.com",
    "name": "Java Code"
  }
}

Теперь необходимо создать файл Java в проекте с именем JsonParseTest и вставить следующий код.

JsonParseTest.java:

package com.hrvector.javabasics.jsonparsertest;
 
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
 
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
 
public class JsonParseTest {
 
    private static final String filePath = "C:\\Users\\katerina\\Desktop\\jsonTestFile.json";
     
    public static void main(String[] args) {
 
        try {
            // считывание файла JSON
            FileReader reader = new FileReader(filePath);
 
            JSONParser jsonParser = new JSONParser();
            JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);
 
            // получение строки из объекта
            String firstName = (String) jsonObject.get("firstname");
            System.out.println("The first name is: " + firstName);
 
            // получение номера из объекта
            long id =  (long) jsonObject.get("id");
            System.out.println("The id is: " + id);
 
            // получение массива
            JSONArray lang= (JSONArray) jsonObject.get("languages");
             
            // берем элементы массива
            for(int i=0; i<lang.size(); i++){
                System.out.println("The " + i + " element of the array: "+lang.get(i));
            }
            Iterator i = lang.iterator();
 
            // берем каждое значение из массива json отдельно
            while (i.hasNext()) {
                JSONObject innerObj = (JSONObject) i.next();
                System.out.println("language "+ innerObj.get("lang") +
                        " with level " + innerObj.get("knowledge"));
            }
            // обрабатываем структуру в объекте
            JSONObject structure = (JSONObject) jsonObject.get("job");
            System.out.println("Into job structure, name: " + structure.get("name"));
 
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (ParseException ex) {
            ex.printStackTrace();
        } catch (NullPointerException ex) {
            ex.printStackTrace();
        }
 
    }
 
}

Объясним данный код. После создания экземпляра JSONParser мы создаем объект JSONObject.

Он содержит коллекцию пар ключ-значение, из которых мы можем получить каждое значение. Чтобы распарсить объекты, вызывается метод get() экземпляра JSONObject, определяющий указанный ключ в качестве аргумента.

Важно применить подходящий метод. Для типов массивов в файле json используется JSONArray, который представляет упорядоченную последовательность значений. В программном коде итератор должен использоваться для получения каждого значения массива json.

Структура в файле предполагает создание нового объекта JSONObject для получения значений.

Полученный результат парсинга приведен ниже.

Output:
The first name is: Katerina
The id is: 1
The 0 element of the array: {"knowledge":"proficient","lang":"en"}
The 1 element of the array: {"knowledge":"advanced","lang":"fr"}
language en with level proficient
language fr with level advanced
Into job structure, name: Java Code

Метод с использованием JsonPATH

Два приведенных выше примера требуют полной десериализации JSON в объект Java перед получением значения. Другой альтернативой является использование JsonPATH, который похож на XPath для JSON и позволяет обходить объекты JSON.

Вам нужно добавить JsonPATH, которую можно получить из репозитория maven.(https://mvnrepository.com/artifact/com.jayway.jsonpath/json-path)

import com.jayway.jsonpath.JsonPath;

public class ParseJSON {
    static String json = "...";
    public static void main(String[] args) {
        String pageName = JsonPath.read(json, "$.pageInfo.pageName");
        System.out.println(pageName);
        
        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);
        }
    }
}

java json parser пример

Оцени статью

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Помогите улучшить статью.

 

Пока нет комментариев.

Добавить комментарий

Ваш e-mail не будет опубликован.

СайдбарКомментарии (0)