【发布时间】:2012-05-31 18:13:33
【问题描述】:
我正在尝试执行以下操作:
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
...}
我正在使用以下几行打印出我的 JSONArray。
JSONArray json = uf.getAllFreebies();
System.out.println(json + "blah1");
现在,当我尝试从 JSONArray 中检索 JSONObject 并尝试将其打印出来时,它会在特定索引处打印出“null”而不是 JSONObject。
jo = json.optJSONObject(i);
System.out.println(jo + "blah2");
谁能告诉我我做错了什么?我的意思是当我的 JSONArray 不为空时,我如何为 JSONOBject 获取空值?
谢谢。
以下是我的 JSONArray logcat:
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 mista@gmail.com","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 panda@gmail.com","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
尝试在索引 i 处打印 JSONOBject 时的 logcat 输出
05-31 21:02:57.156: I/System.out(318): nullblah2
【问题讨论】:
-
jo = json.getJSONObject(i); -
有机会发布您记录的 JSONArray 输出吗?它可能是一个坏对象。如果
JSONArray无法将该索引处的值强制转换为JSONObject,它将返回null。也可以尝试调用json.opt(i)来获得数组不会强制执行的原始结果。 -
@SamirMangroliya 感谢您的回复。 jo.json.getJSONObject(i);等同于 jo = json.optJSONObject(i);两者都从索引返回 JSONOBject,但唯一的区别是,如果在不同的 getJSONOBject 处找不到 JSONOBject,则 optJSONOBject 返回空值。另外我尝试使用 getJSONOBject() 也不起作用
-
发布 JSON 本身。 这很可能是一个简单的错误/不匹配。请注意,
opt是 optional 的缩写,因此null是有效结果。 (我的 -1 和“过于本地化”是因为没有提供足够的信息。)