Как я могу поместить возврат JSON в массив?

#android #json #parsing

#Android #json #синтаксический анализ

Вопрос:

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

 JSONObject jsonObject = new JSONObject(jsonStr);
JSONArray accounts = jsonObject.getJSONArray("account_data");
    for(int i=0;i < accounts.length();i  ){
        JSONObject a = accounts.getJSONObject(i);
        sin = a.getString("sin");
        account_name = a.getString("account_name");
        address = a.getString("address");
        status = a.getString("status");
        due_date = a.getString("due_date");
        total_amount = a.getDouble("total_amount");

        sin_lbl.setText(a.getString("account_name"));
    }
  

вот файл JSON

 {"account_data":{
    "sin":"200111-102 ",
    "account_name":"LUMABAN, CRISTOM ",
    "address":"352 MABINI ST.,, SABANG, Baliwag ",
    "status":"A ",
    "due_date":"2019-04-23",
    "total_amount":"491.00"
},"code":1101,"message":"Account Info Retrieved"}
  

У меня ошибка при вводе его в массив.

Комментарии:

1. В чем конкретно заключается ошибка?

2. account_data не является JSONArray почему вы вызываете getJsonArray()? вам нужно getJsonObject("account_data")

3. JSONObject cannot be converted to JSONArray

4. как я могу выполнить цикл getJsonObject(«account_data») и получить все данные?

Ответ №1:

Вместо использования JSONArray попробуйте использовать JSONObject .

 
String[] array = {json.get("sin"), json.get("account_name"), json.get("address"), json.get("status"), json.get("due_date"), json.get("total_amount") }

  

Ответ №2:

{«account_data»:{«sin»:»200111-102″,»account_name»: «ЛУМАБАН, КРИСТОМ», «адрес»: «УЛ. МАБИНИ, 352,, САБАНГ, Баливаг», «статус»: «A «, «due_date»:»2019-04-23″, «total_amount»:»491.00″},»code»: 1101, «message»: «Информация об учетной записи получена»}

На самом деле, это объект json, а не массив. Чтобы вы не могли преобразовать объект json в массив json, разница между массивом Json и объектом Json:

  1. JSONArray — это упорядоченная последовательность значений. JSONObject представляет собой неупорядоченную коллекцию пар имя / значение.
  2. JSONArray: его внешняя текстовая форма представляет собой строку, заключенную в квадратные скобки с запятыми, разделяющими значения. JSONObject: его внешняя форма представляет собой строку, заключенную в фигурные скобки с двоеточиями между именами и значениями и запятыми между значениями и именами.

Ответ №3:

Пожалуйста, используйте этот синтаксический анализ json

 try {

            JSONObject jsonObject = new JSONObject(jsonStr);
            JSONObject accounts = jsonObject.getJSONObject("account_data");

            sin = accounts.getString("sin");
            account_name = accounts.getString("account_name");
            address = accounts.getString("address");
            status = accounts.getString("status");
            due_date = accounts.getString("due_date");
            total_amount = accounts.getDouble("total_amount");

            sin_lbl.setText(a.getString("account_name"));
        } catch (Exception e) {
        }
  

Ответ №4:

если вы спросили об итерации по объекту json, вы могли бы попробовать это

  JSONObject jObject  = new JSONObject(jsonStr);
 JSONObject  menu = jObject.getJSONObject("account_data");
 Map<String,String> map = new HashMap<String,String>();
 Iterator iter = menu.keys();
 while(iter.hasNext()){
   String key = (String)iter.next();
   String value = menu.getString(key);
   map.put(key,value);
 }
  

итак, теперь у вас есть ваши данные в виде пары ключа и значения

если у вас есть массив json этого ответа, вы можете сделать следующее

  JSONObject root = new JSONObject("your root");
 JSONArray resultArray = root.getJSONArray("your array key");
 for (int i = 0; i < resultArray.length(); i  ) {
     // here to get json object one by one and access every item into it 
     JSONObject resultObject = resultArray.getJSONObject(i);
     posterPath = resultObject.getString("key");
     title = resultObject.getString("key");
     releaseDate = resultObject.getString("key");
     description = resultObject.getString("key");
     voteAverage = resultObject.getDouble("key");
 }