原因:java.lang.NullPointerException:尝试在空对象引用上调用虚方法 'int org.json.JSONArray.length()'
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object reference
我需要从 String builder
解析 json
,但我收到此错误:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object reference
不知道为什么stringBuilder.toString()
把对象数组给我!
这是我的代码:
try {
// HttpResponse is an interface just like HttpPost.
//Therefore we can't initialize them
HttpResponse httpResponse = httpClient.execute(httpPost);
// According to the JAVA API, InputStream constructor do nothing.
//So we can't initialize InputStream although it is not an interface
InputStream inputStream = httpResponse.getEntity().getContent();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
String bufferedStrChunk = null;
while((bufferedStrChunk = bufferedReader.readLine()) != null){
stringBuilder.append(bufferedStrChunk);
}
// return stringBuilder.toString();
System.out.println("EHEH"+stringBuilder.toString());
JSONArray mainObject = null;
try {
mainObject = new JSONArray(stringBuilder.toString());
} catch (JSONException e) {
e.printStackTrace();
}
for (int i = 0; i < mainObject.length(); i++) {
JSONObject object = null;
try {
object = mainObject.getJSONObject(i);
} catch (JSONException e) {
e.printStackTrace();
}
try {
Video video=new Video();
String url = object.getString("url");
String titolo = object.getString("titolo");
String sottotitolo = object.getString("sottotitolo");
String data = object.getString("date");
//video.setId(idd4);
System.out.println("CAZZO:"+video.getId());
video.setPic(url);
video.setTitolo(titolo);
video.setSottotitolo(sottotitolo);
video.setData(data);
videoList.add(video);
} catch (JSONException e) {
e.printStackTrace();
}
}
有人可以帮助我吗?
JSON 回复:
您忘记初始化 StringBuilder
。
先初始化再使用
StringBuilder sb = new StringBuilder();
stringBuilder.toString()
return是什么意思?使用 System.out.println()
你的错误是String data = object.getString("data");
JSONObject mainObject = null;
try
{
mainObject = new JSONObject(stringBuilder.toString());
JSONArray jsonArrayPDF = mainObject.getJSONArray("pdfs");
for (int i = 0; i < jsonArrayPDF.length(); i++) {
JSONObject object = jsonArrayPDF.getJSONObject(i);
Video video=new Video();
String url = object.getString("url");
String titolo = object.getString("titolo");
String sottotitolo = object.getString("sottotitolo");
String data = object.getString("data");
//video.setId(idd4);
System.out.println("CAZZO:"+video.getId());
video.setPic(url);
video.setTitolo(titolo);
video.setSottotitolo(sottotitolo);
video.setData(data);
videoList.add(video);
}
}
catch (JSONException e)
{
e.printStackTrace();
}
我需要从 String builder
解析 json
,但我收到此错误:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int org.json.JSONArray.length()' on a null object reference
不知道为什么stringBuilder.toString()
把对象数组给我!
这是我的代码:
try {
// HttpResponse is an interface just like HttpPost.
//Therefore we can't initialize them
HttpResponse httpResponse = httpClient.execute(httpPost);
// According to the JAVA API, InputStream constructor do nothing.
//So we can't initialize InputStream although it is not an interface
InputStream inputStream = httpResponse.getEntity().getContent();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
String bufferedStrChunk = null;
while((bufferedStrChunk = bufferedReader.readLine()) != null){
stringBuilder.append(bufferedStrChunk);
}
// return stringBuilder.toString();
System.out.println("EHEH"+stringBuilder.toString());
JSONArray mainObject = null;
try {
mainObject = new JSONArray(stringBuilder.toString());
} catch (JSONException e) {
e.printStackTrace();
}
for (int i = 0; i < mainObject.length(); i++) {
JSONObject object = null;
try {
object = mainObject.getJSONObject(i);
} catch (JSONException e) {
e.printStackTrace();
}
try {
Video video=new Video();
String url = object.getString("url");
String titolo = object.getString("titolo");
String sottotitolo = object.getString("sottotitolo");
String data = object.getString("date");
//video.setId(idd4);
System.out.println("CAZZO:"+video.getId());
video.setPic(url);
video.setTitolo(titolo);
video.setSottotitolo(sottotitolo);
video.setData(data);
videoList.add(video);
} catch (JSONException e) {
e.printStackTrace();
}
}
有人可以帮助我吗?
JSON 回复:
您忘记初始化 StringBuilder
。
先初始化再使用
StringBuilder sb = new StringBuilder();
stringBuilder.toString()
return是什么意思?使用 System.out.println()
你的错误是String data = object.getString("data");
JSONObject mainObject = null;
try
{
mainObject = new JSONObject(stringBuilder.toString());
JSONArray jsonArrayPDF = mainObject.getJSONArray("pdfs");
for (int i = 0; i < jsonArrayPDF.length(); i++) {
JSONObject object = jsonArrayPDF.getJSONObject(i);
Video video=new Video();
String url = object.getString("url");
String titolo = object.getString("titolo");
String sottotitolo = object.getString("sottotitolo");
String data = object.getString("data");
//video.setId(idd4);
System.out.println("CAZZO:"+video.getId());
video.setPic(url);
video.setTitolo(titolo);
video.setSottotitolo(sottotitolo);
video.setData(data);
videoList.add(video);
}
}
catch (JSONException e)
{
e.printStackTrace();
}