大家好,我是json解析的新手..我有一个链接,但我的应用程序崩溃了 在这一行显示错误
JSONArray earthquakes = json.getJSONArray("wallpaper");
JSONObject json = JSONfunctions
.getJSONfromURL("http://myurl.php?category=all&device=all&hits=all");
try {
JSONArray earthquakes = json.getJSONArray("wallpaper");
for (int i = 0; i < earthquakes.length(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
JSONObject jobject = earthquakes.getJSONObject(i);
map.put("id", String.valueOf(i));
map.put("category", "Earthquake name:" + jobject.getString("category"));
map.put("title",
"title:" + jobject.getString("title"));
mylist.add(map);
}
} catch (JSONException e) {
Log.e("log_tag", "Error Parsing data" + e.toString());
}
ListAdapter adapter = new SimpleAdapter(this, mylist,
R.layout.activity_hd_wallpapers, new String[] { "title",
"magnitude" }, new int[] { R.id.item_title,
R.id.item_subtitle });
setListAdapter(adapter);
final ListView listview = getListView();
listview.setTextFilterEnabled(true);
}
这是我的班级 公共类JSONfunctions {
public static JSONObject getJSONfromURL(String url){
//initialize
InputStream Input_Stream = null;
String result = "";
JSONObject jArray = null;
//http post
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
Input_Stream = entity.getContent();
}catch (Exception e) {
Log.e("log_tag","Error in Http Connection" + e.toString());
}
//convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(Input_Stream,"iso-8859-1"),8);
StringBuilder String_builder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
String_builder.append(line+ "\n");
}
Input_Stream.close();
result = String_builder.toString();
} catch (Exception e) {
Log.e("Log_tag","Error Converting result" + e.toString());
}
try {
jArray = new JSONObject(result);
} catch (JSONException e) {
Log.e("Log_tag", "Error Parsing Data" + e.toString());
}
return jArray;
}
}
这是我的 blablabla.php?category = all&amp; device = all&amp; hits = all
"wallpaper":[
{
"id":"1173",
"category":"abstract",
"title":"155",
"images":{
"image_thumb":"http:\/\/urlof.jpg",
"image1":"http:\/\/url.jpg",
"image2":"http:\/\/url.jpg",
"image3":"http:\/\/url.jpg",
"image4":"url.jpg"
},
"hits":"2"
},
{
"id":"1172",
"category":"abstract",
"title":"154",
"images":{
"image_thumb":"url.jpg",
"image1":"url.jpg",
"image2":"url.jpg",
"image3":"url.jpg",
"image4":"url.jpg"
},
"hits":"0"
},
但我的logcat说:
3-27 18:55:02.825: W/dalvikvm(17972): threadid=1: thread exiting with uncaught exception (group=0x409e41f8)
03-27 18:55:02.835: E/AndroidRuntime(17972): FATAL EXCEPTION: main
03-27 18:55:02.835: E/AndroidRuntime(17972): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.hdwallpapers/com.example.hdwallpapers.HD_Wallpapers}: java.lang.NullPointerException
03-27 18:55:02.835: E/AndroidRuntime(17972): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
03-27 18:55:02.835: E/AndroidRuntime(17972): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
03-27 18:55:02.835: E/AndroidRuntime(17972): at android.app.ActivityThread.access$600(ActivityThread.java:123)
03-27 18:55:02.835: E/AndroidRuntime(17972): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
03-27 18:55:02.835: E/AndroidRuntime(17972): at android.os.Handler.dispatchMessage(Handler.java:99)
03-27 18:55:02.835: E/AndroidRuntime(17972): at android.os.Looper.loop(Looper.java:137)
03-27 18:55:02.835: E/AndroidRuntime(17972): at android.app.ActivityThread.main(ActivityThread.java:4424)
03-27 18:55:02.835: E/AndroidRuntime(17972): at java.lang.reflect.Method.invokeNative(Native Method)
03-27 18:55:02.835: E/AndroidRuntime(17972): at java.lang.reflect.Method.invoke(Method.java:511)
03-27 18:55:02.835: E/AndroidRuntime(17972): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-27 18:55:02.835: E/AndroidRuntime(17972): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-27 18:55:02.835: E/AndroidRuntime(17972): at dalvik.system.NativeStart.main(Native Method)
03-27 18:55:02.835: E/AndroidRuntime(17972): Caused by: java.lang.NullPointerException
03-27 18:55:02.835: E/AndroidRuntime(17972): at com.example.hdwallpapers.HD_Wallpapers.onCreate(HD_Wallpapers.java:35)
03-27 18:55:02.835: E/AndroidRuntime(17972): at android.app.Activity.performCreate(Activity.java:4492)
03-27 18:55:02.835: E/AndroidRuntime(17972): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-27 18:55:02.835: E/AndroidRuntime(17972): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
答案 0 :(得分:0)
如果你想获得 id ,你必须像这样解析你的JSON:
JSONObject json = new JSONObject(jsonString);
JSONArray jsonArray = json.getJSONArray("wallpaper");
// for example first array element
JSONObject firstArrElement = jsonArray.getJSONObject(0);
String id = firstArrElement.getString("id");
答案 1 :(得分:0)
根据您的JSON壁纸是JSONArray
试试这个
JSONArray wallpaperArray = json.getJSONArray("wallpaper");
for (int i = 0; i < wallpaperArray (); i++)
{
JSONObject c = wallpaperArray.getJSONObject(i);
String ID = c.getString("id");
}
答案 2 :(得分:0)
最好的tutorial for JSON parsing或关注this video tutorial(150到153)。这可能对您有帮助,因为您是JSON的初学者。
答案 3 :(得分:0)
down vote
private void Get_List() {
// TODO Auto-generated method stub
CountDownTimer count_Timer;
try {
count_Timer.start();
SetUrl url = new SetUrl();
URL myurl = new URL(//"Your URL");
HttpURLConnection connection = (HttpURLConnection) myurl
.openConnection();
connection.connect();
int code = connection.getResponseCode();
if (code != 200) {
setContentView(R.layout.webimg);
TextView tv_nointernet = (TextView) findViewById(R.id.tv_nointernet);
tv_nointernet.setText("Please turn your internet on. . .");
} else {
BufferedReader dis = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
String myString, Result = dis.readLine();
while ((myString = dis.readLine()) != null) {
Result += myString;
}
JSONObject jsonObject = new JSONObject(Result);
JSONArray jsonArray = jsonObject.getJSONArray("posts");
Rest_List = new ArrayList<Rest_Listing>();
for (int i = 0; i < jsonArray.length(); i++) {
Rest_Listing R_List = new Rest_Listing();
JSONObject O = jsonArray.getJSONObject(i);
R_List.setRest_Address1(O.getJSONObject("post")
.getString("Name"));
Rest_List.add(i, R_List);
}
count_Timer.cancel();
}
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}