我正在尝试从网址解析json条目。以下是代码段。
TextView txtViewParsedValue;
private JSONObject jsonObject;
private static String url = "https://www.dropbox.com/s/rhk01nqlyj5gixl/jsonparsing.txt?dl=1";
String strParsedValue = null;
TextView txtViewParsedValue;
private JSONObject jsonObject;
private static String url = "https://www.dropbox.com/s/rhk01nqlyj5gixl/jsonparsing.txt?dl=1";
String strParsedValue = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtViewParsedValue = (TextView) findViewById(R.id.textview1);
try {
parseJSON();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void parseJSON() throws JSONException
{
JSONParser jParser = new JSONParser();
jsonObject = jParser.getJSONFromUrl(url);
JSONObject object = jsonObject.getJSONObject("student");
JSONArray subArray = object.getJS ONArray("student");
for(int i=0; i<subArray.length(); i++)
{
strParsedValue+="\n"+subArray.getJSONObject(i).getString("id").toString();
}
txtViewParsedValue.setText(strParsedValue);
}
我想提取学生的所有ID并在textview中打印它们。它给出了空指针异常。搜索了几篇与之相关的帖子并尝试了它们,但是没有用,任何指导都会有很大的帮助!
答案 0 :(得分:3)
student
是JsonArray
而不是JsonObject
,但您尝试将其设为JsonObject
。将解析代码更改为:
JSONArray subArray =jsonObject.getJSONArray("student");//<<< get student JSONArray
for(int i=0; i<subArray.length(); i++)
{
strParsedValue+=
"\n"+subArray.getJSONObject(i).getString("id").toString();
}
答案 1 :(得分:0)
请勿使用JSONObject object = jsonObject.getJSONObject("student");
,因为根据您的JSON 学生是一个数组。
将其更改为
JSONArray subArray = jsonObject.getJSONArray("student");