2014-08-01 8 views
0

я хочу, чтобы получить доступ в узле, который содержит URL моей структуры JSON является следующейКак получить доступ к узлу в JSON

{ 
    "product": { 
     "name": "myApp", 
     "config": [ 
      { 
       "grade": "first", 
       "courses": [ 
        { 
         "name": "Math", 
         "url": "example.com" 
        } 
       ] 
      } 
     ] 
    } 
} 

Недавно я мог получить доступ к большому количеству узлов, например, класс: первый, второй, третий и т. д., и я создаю список с адаптером, а затем сначала прикасаюсь к элементу, и он отправляет меня в другое действие, которое содержит курсы, я создаю ту же структуру для доступа на курсах, но когда я хочу получить доступ к url для каждого класса он отправил меня к последнему URL-адресу, как я могу получить доступ к определенному URL-адресу? извините за мой английский

ответ

1

Используйте этот код, чтобы сделать запрос 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
  • место и выше код внутри Asynchronous task иначе это сбой, потому что, поскольку вы делаете сетевой запрос

Надеюсь, что это поможет! Вернитесь назад, если у вас есть какие-либо ошибки.

0

Ваш json похож на этот объект-объект-массив-массив-объект-строка. Итак, вы должны разобрать его как MainActivity И перед разоблачением вы должны получить его из url в jsonparser.java.

Это 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; 
} 
} 

И это MainActivity.java для JSON.

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) {} 
} 
} 
Смежные вопросы