Чтение файла JSON с помощью JSONParser, недоступного в jarfile - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь прочитать файл json и преобразовать его в jsonObject, и когда я искал способ сделать это, я столкнулся с методом для пользователя

JSONParser parser= new JSONParse();

Но версия org.jsonЯ использую в коде " 20180803 ".Он не содержит JSONParser.Был ли он удален из пакета org.json ?Если да, что это за новый класс или метод, который я мог бы использовать, чтобы прочитать файл json и преобразовать его в объект json.

Моя зависимость приведена ниже:

       <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20180813</version>
        </dependency>

Ответы [ 4 ]

1 голос
/ 21 марта 2019

org.json библиотека имеет очень простой API, который не имеет JSONParser, но имеет JSONTokener.Мы можем построить JSONObject или JSONArray непосредственно из String:

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

public class JsonApp {

    public static void main(String[] args) {
        // JSON Object
        String object = "{\"p1\":\"v1\", \"p2\":2}";
        JSONObject jsonObject = new JSONObject(object);
        System.out.println(jsonObject);

        // JSON Array
        String array = "[{\"p1\":\"v1\", \"p2\":2}]";
        JSONArray jsonArray = new JSONArray(array);
        System.out.println(jsonArray);
    }
}

Над отпечатками кода:

{"p1":"v1", "p2":2}
[{"p1":"v1","p2":2}]

Вы должны заметить, что это зависит от JSON полезной нагрузкикакой класс использовать: если JSON начинается с {, использовать JSONObject, если с [ - использовать JSONArray.В другом случае полезная нагрузка JSON недействительна.

Как уже упоминалось в других ответах, если вы можете, вы обязательно должны использовать Jackson или Gson

1 голос
/ 21 марта 2019

Привет, вы можете использовать простой JSON.Вам просто нужно добавить в свой файл pom.xml:

<dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
</dependency>

Пример кода

public static JSONObject convertJsonStingToJson(String jsonString) {
    JSONParser parser = new JSONParser();
    return  json = (JSONObject) parser.parse(jsonString);
}
0 голосов
/ 21 марта 2019

Добавить следующую зависимость в файл сборки

//json processing
implementation("com.fasterxml.jackson.core:jackson-core:2.9.8")
implementation("com.fasterxml.jackson.core:jackson-annotations:2.9.8")
implementation("com.fasterxml.jackson.core:jackson-databind:2.9.8")

a.json file

{
  "a": "b"
}

Код:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.FileInputStream;
import java.io.InputStream;


public class App {

    public static void main(String[] args) throws Exception {
        ObjectMapper objectMapper = new ObjectMapper();
        InputStream input = new FileInputStream("a.json");
        JsonNode obj =  objectMapper.readTree(input);
        System.out.println(obj.get("a")); // "b"
    }
}
0 голосов
/ 21 марта 2019

Короткий ответ на ваш вопрос: Нет, он не был удален, потому что его никогда не было .

Я думаю, что вы упоминаете библиотеку и пытаетесь использовать другую.В любом случае, если вы действительно хотите использовать org.json , вы можете найти, как здесь

JSONObject jsonObject = new JSONObject(instanceOfClass1);
String myJson = jsonObject.toString();
...