При попытке получить JSONObject из JSONArray возвращает ноль?

1

Я пытаюсь сделать следующее:

UserFunctions uf = new UserFunctions();
    JSONArray json = uf.getAllFreebies();
    System.out.println(json + "blah1"); //Here im able to retrieve the whole JSONArray.

try{    
System.out.println("1");
    for (int i = 1; i <json.length(); i++) {
        System.out.println("2");
            jo = json.optJSONObject(i); //Im getting null value here
            System.out.println(jo + "blah2"); //Here im getting null

...}

Im распечатывает мой JSONArray, используя следующие строки.

JSONArray json = uf.getAllFreebies();
System.out.println(json + "blah1"); 

Теперь в следующих строках, когда я попытался извлечь JSONObject из JSONArray и попытался его распечатать, он печатает "нуль" вместо JSONObject в конкретном индексе.

jo = json.optJSONObject(i);
System.out.println(jo + "blah2"); 

Может кто-нибудь скажет мне, что я делаю неправильно? Я имею в виду, как я могу получить null для JSONOBject, когда мой JSONArray не равен нулю?

Спасибо.

Ниже приведен мой logcat JSONArray:

05-31 21:02:57.156: I/System.out(318): [["viking","Art","Potrait","Potrait","Good","im giving out potrait 7325697","176 Fiat Ave","Iselin","New Jersey","USA","08830","2012-05-27"],["n00b","Books","Novels","Novels","Good","Im giving out novels 7325697","b9 maa krupa","petlad","Gujarat","India","388450","2012-05-27"],["n00b","Computers","laptop","laptop giveaway","Good","Im giving out laptop if you are interested than pls call on 7325697","B9 Ma  Krupa","Petlad","Gujarat","India","388450","2012-05-27"],["mista","Cameras & Photos","Camera","Camera GiveAway","Very good","im giving out camera .its kodak .pls email me on [email protected]","Mista Lee elm street","seoul","Korea","South Korea","ha8 9sd","2012-05-27"],["panda","Gaming Consoles","XBOX","XBOX 360","Very Good","Im giving out xbox 360.if you are interested please email me on [email protected]","435 Carmen Rd,","Buffalo","New York","USA","14226","2012-05-27"],["viking","Cameras & Photos","Camera","Kodak Camera","Good","Kodak Camera giveaway.Pls call on 732397","","Iselin","New Jersey","USA","08830","2012-05-28"],["viking","Books","Novels","Novel GA","Good","Novel give away.call on 7325697.","","Iselin","New Jersey","USA","08830","2012-05-28"],["viking","Automotive","Car","Car GiveAway","Good","Im giving out car.if you are interested pls call 7323697.","176 Fiat Ave","Iselin","New Jersey","USA","08830","2012-05-29"],["viking","Collectibles","Medallions","Medallion GA","Very Good","Im giving out medallion.if inetrested pls call 732697","176 Fiat Ave,","Iselin","New Jersey","USA","08830","2012-05-29"],["viking","Clothing & Accessories","cloths","cloths giveaway","Good","im giving out cloths if you are interested pls call on 735697","176 Fiat Ave,","Iselin","New jersey","USA","08830","2012-05-29"],["viking","Books","Novel","Novel GA","Good","pls call 735697","435 carmen rd","buffalo","ny","usa","14226","2012-05-29"],["viking","Books","TextBook","CHemistry 101","GOod","pls call 735697","176 fiat ave","iselin","new jersey","usa","08830","2012-05-29"],["mista","Books","Notebook","Notbook","Good","im giving out notebbok if you are interested pls call 48374288423","elm street","seaoul","na","South Korea","jfjafjk","2012-05-29"]]blah1

logcat output при попытке распечатать JSONOBject по индексу i

05-31 21:02:57.156: I/System.out(318): nullblah2
  • 1
    jo = json.getJSONObject(i);
  • 2
    Есть ли шанс опубликовать вывод JSONArray, который вы зарегистрировали? Это может быть плохой объект. Если JSONArray не может JSONArray значение по этому индексу в JSONObject он вернет значение NULL. Также попробуйте вызвать json.opt(i) чтобы получить необработанный результат, который массив не пытается вызвать.
Показать ещё 4 комментария
Теги:
arrays

1 ответ

4
Лучший ответ

JSON [[...], [...], [...]] не содержит JSON-объектов, но в нем есть некоторые JSON-массивы.

Таким образом, optJSONObject находит JSON-массив (где он ожидал JSON-объект) и возвращает значение null потому что он имеет неправильный тип. (opt коротка для опционного.)

Используйте optJSONArray (обратите внимание на массив, а не объект). Кроме того, используйте getJSONArray, который будет вызывать исключение JSON при ошибке.

Счастливое кодирование.


Обратите внимание, что JSON строго контролирует объекты, массивы и различные значения. Концепция массива, являющегося особым (суб) видом объекта (в смысле JSON), существует в JavaScript, но не обязательно распространяется на другие реализации JSON. Например, класс JSONArray не имеет отношения к классу JSONObject.

  • 0
    Один быстрый вопрос. Как вы можете видеть, я получаю JSONArray JSONArray json = uf.getAllFreebies (); так что теперь, как вы сказали мне, у меня есть JSONArrays, значит ли это, что у меня есть JSONArray of JSONArray? Также я должен теперь объявить новый JSONArray и сделать JSONArray js = json.getJSONArray (i) ;?
  • 0
    Да, в JSON-массиве есть JSON-массивы, поэтому вывод правильный.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню