[英]How do I access a node in json
我想在包含URL的節點中訪問我的json結構如下
{
"product": {
"name": "myApp",
"config": [
{
"grade": "first",
"courses": [
{
"name": "Math",
"url": "example.com"
}
]
}
]
}
}
最近,我可以訪問很多節點,例如年級:第一,第二,第三等,並且我使用適配器生成了一個列表視圖,然后例如我首先觸摸了一個項目,然后將其發送到包含課程的另一個活動中,我創建了使用相同的結構訪問課程,但是當我想訪問每個年級的URL時,它會將我發送到最后一個URL,如何訪問特定的URL? 對不起我的英語不好
使用此代碼發出HTTP請求(用於url
中的url
傳遞)
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 500);
Client = new DefaultHttpClient(params);
httpget = new HttpGet(url);
ResponseHandler<String> responseHandler = new BasicResponseHandler();
mContent = Client.execute(httpget, responseHandler);
然后使用它來獲取數據:
JSONObject jsonObject = new JSONObject(mContent);
String url =json.getJSONObject("product").getJSONObject("config").getJSONObject("courses").getString("url");
OUTPUT :: String url
包含您要搜索的數據!
注意 ::
url
您必須傳遞您嘗試從其獲取JSON響應的URL Asynchronous task
否則由於您正在發出網絡請求而導致崩潰 希望這可以幫助! 如果有任何錯誤,請還原。
您的json就像這個object-object-array-array-object-string。 因此,您必須像MainActivity一樣解析它,並且在解析之前,您必須從jsonparser.java中的url獲取它。
這是JsonParser.java
package com.skymaster.jsonparser;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class JsonParser {
final String TAG = "JsonParser.java";
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
public JSONObject getJSONFromUrl(String url) {
// make HTTP request
try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e(TAG, "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e(TAG, "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
這是用於json的MainActivity.java。
package com.skymaster.jsonparser;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// we will using AsyncTask during parsing
new AsyncTaskParseJson().execute();
}
// you can make this class as another java file so it will be separated from your main activity.
public class AsyncTaskParseJson extends AsyncTask<String, String, String> {
final String TAG = "AsyncTaskParseJson.java";
// set your json string url here
String yourJsonStringUrl = "yourjsonurlhere";
@Override
protected void onPreExecute() {}
@Override
protected String doInBackground(String... arg0) {
try {
// instantiate our json parser
JsonParser jParser = new JsonParser();
JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl);
String url=json.getJSONObject("product").getJSONArray("config").getJSONArray("courses").getJSONObject(0).getString("url");
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String strFromDoInBg) {}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.