Не удалось прочитать файл JSON в новой IDE - PullRequest
1 голос
/ 25 сентября 2019

У меня есть проект Eclipse со следующим кодом:

import org.json.*;
import org.json.simple.JSONObject;

import java.io.*;
import java.util.Iterator;

(...)

public static void main( String[] args )
{   
String resourceName = "C:\\Users\\Snail_Sniffer\\Desktop\\books.json";
String jsonData = readFile(resourceName);   
JSONObject jobj = new JSONObject(jsonData);
(...)

Он не выдает ошибок и работает как задумано, но когда я повторно использую тот же код в IntelliJ, он выдает следующие ошибки:

Ошибка: java: конструктор JSONObject в классе org.json.simple.JSONObject не может быть применен к данным типам;обязательно: аргументы не найдены: java.lang.String причина: фактические и формальные списки аргументов различаются по длине


Ошибка: Java: не удается найти символ символа: метод getString (java.lang.String) расположение: переменная jobj типа org.json.simple.JSONObject

Что является причиной проблемы и как ее обойти?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Я не уверен, какую библиотеку вы используете в eclipse, но org.json.simple.JSONObject не имеет конструктора с аргументом String.Он не имеет конструктора аргументов

public JSONObject()

Если вы хотите проанализировать строку json, используя библиотеку org.json.simple, вам нужно JSONParser

JSONParser parser = new JSONParser();
JSONObject jsonObject = (JSONObject) parser.parse(jsonData);
0 голосов
/ 25 сентября 2019

Еще один способ прочитать Json, попробуйте так:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public static void main( String[] args ){ 

final StringBuilder responseData = new StringBuilder();
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(books.json);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while ((line = bufferedReader.readLine()) != null) {
        responseData.append(line);
    }
System.Out.Println(responseData.toString());
}

Это даст JsonString, затем попытайтесь сопоставить JsonString с соответствующим Dto.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...