2016-11-24 6 views
-1
JSONArray jsonArray = (JSONArray) obj; 

Когда я использую приведенный выше код, он показывает сообщение об ошибке:Как читать значение массива JSON из файла

java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to org.json.simple.JSONArray 

Пожалуйста, кто-нибудь предложить какой-либо метод, чтобы преодолеть эту ошибку или любой другой способ чтения JSON value формирует файл в Java (настольное приложение).

+1

Можете ли вы показать нам свой JSON в файле? Как ваше исключение, он сам показывает, что у вас нет JSONArray в вашем файле. –

ответ

0

Проверьте содержимое файла.

Похоже, что это не массив, а объект json.

Открыть файл с помощью текстового редактора. Если содержание что-то вроде:

{ // First character 
    ... content here 
} // Last character 

это объект, если он похож на

[ // First character 
    ... content here 
] // Last character 

это массив.

Если вам нужно прочитать объект, который нужно изменить код следующим образом:

JSONObject jsonObject = (JSONObject) obj; 
0
JSONArray jsonArray = (JSONArray) obj; 

Это obj имеет тип JSONObject, поэтому измените эту строку в

JSONObject jsonObject = (JSONObject)obj; 
0

использования это для получения значения json в формате строки из файла

public String loadJSONFromFile() { 
    String json = null; 
    try { 
     InputStream is = getActivity().getAssets().open("yourfilename.json"); 
     int size = is.available(); 
     byte[] buffer = new byte[size]; 
     is.read(buffer); 
     is.close(); 
     json = new String(buffer, "UTF-8"); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
     return null; 
    } 
    return json; 
} 

JSONObject ребенок из JsonArray, чтобы на мое предложение использовать как этот

final JSONArray jsonArray = new JSONArray(); 
jsonArray.put(obj); //obj is your JsonObject 

и вы можете получить JSONObject из массива, как

jsonArray.getJSONObject(0); //0 is index of your JsonObject in JsonArray 

Надеется, что это поможет вам.

Смежные вопросы