Невозможно прочитать данные из файла JSON - PullRequest
1 голос
/ 14 октября 2019
import java.io.FileNotFoundException;
import java.io.FileReader;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public class testdata {
    /**
     * @param args
     * @throws FileNotFoundException 
     */
    public static void main(String[] args) throws FileNotFoundException {
        JSONParser parser = new JSONParser(); 
        try { System.out.println("Reading JSON file from Java program"); 
        FileReader fileReader = new FileReader("C:\\Users\\...\\testdata.json"); 
        JSONObject json = (JSONObject) parser.parse(fileReader); 
        String title = (String) json.get("Attachment__c"); 
        System.out.println("title: " + title); 
                } catch (Exception ex) 
        { ex.printStackTrace(); }
}}

При попытке использовать приведенный выше код я получил сообщение об ошибке ниже.

java.lang.ClassCastException: org.json.simple.JSONArray нельзя преобразовать в org.json.simple.JSONObject в testdata.main (testdata.java:33)

мой файл JSON

enter image description here

Ответы [ 2 ]

1 голос
/ 14 октября 2019
public static void main(String[] args) throws FileNotFoundException {
    JSONParser parser = new JSONParser();
    try {
        FileReader fileReader = new FileReader("C:\\Users\\Priya\\testdata.json");
        Object jsonObj = parser.parse(fileReader);
        if (jsonObj instanceof JSONObject) {

        } else if (jsonObj instanceof JSONArray) {
            JSONArray array = (JSONArray) jsonObj;
            System.out.println(array.size());
            for (int i = 0; i < array.size(); i++) {
                String attachmentValue = (String) ((JSONObject) array.get(i)).get("Attachment__c");
        }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}
1 голос
/ 14 октября 2019

Вы можете разобрать его в тип объекта, а затем выполнить проверку , какой тип структуры json , у вас есть либо Массив , либо Объект .

System.out.println("Reading JSON file from Java program");
FileReader fileReader = new FileReader("C:\\Users\\...\\testdata.json");
Object jsonObj = parser.parse(fileReader);
if (jsonObj instanceof JSONObject) {
    // its an object
} else if (jsonObj instanceof JSONArray) {
    JSONArray array = (JSONArray) jsonObj;
    array.forEach(i -> {
        JSONObject obj = (JSONObject) i;
        JSONObject attributes = (JSONObject) obj.get("attributes");

        System.out.println(attributes.get("Attachment__c"));
   });
} else {
    // something else
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...