2013-11-27 32 views
0

第一個問題。這樣如何在android中獲取json?

   echo(json_encode($thing)); 

PHP回聲JSON數據,那麼我怎樣才能在Android的這個JSON數據?

我必須使用JSONArray,JSONObject嗎?

第二個問題。如果php echos字符串數據,那麼我怎麼能將這個字符串數據轉換爲JSON數據? 我嘗試在Android使用asynctask httpPost,它從PHP獲取字符串數據。

String get_url = null; 
     // TODO Auto-generated method stub 
get_url = sendData("music", "http://www.test.com/test.php"); 

private String sendData(String name, String url) 
      throws ClientProtocolException, IOException { 
     // TODO Auto-generated method stub 
     HttpPost request = makeHttpPost(name, url); 
     HttpClient client = new DefaultHttpClient(); 
     ResponseHandler<String> reshandler = new BasicResponseHandler(); 
     String result = client.execute(request, reshandler); 
     return result; 
    } 

    private HttpPost makeHttpPost(String name, String url) { 
     // TODO Auto-generated method stub 
     HttpPost request = new HttpPost(url); 
     Vector<NameValuePair> nameValue = new Vector<NameValuePair>(); 
     nameValue.add(new BasicNameValuePair("name", name)); 
     request.setEntity(makeEntity(nameValue)); 
     return request; 
    } 

    private HttpEntity makeEntity(Vector<NameValuePair> nameValue) { 
     HttpEntity result = null; 
     try { 
      result = new UrlEncodedFormEntity(nameValue); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return result; 
    } 
+0

這裏是一個指南:http://www.vogella.com /articles/AndroidJSON/article.html –

+0

請參閱下面的鏈接我已發佈http://stackoverflow.com/questions/20212520/android-json-parse-not-working/20212854#20212854(從URL讀取json數據) – prakash

回答

3

關於第一個問題,這裏是Android的解析JSON的例子:

public JSONObject getJSONFromUrl(String url) { 
    try { 
     // defaultHttpClient 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpPost httpPost = new HttpPost(url); 
     HttpResponse httpResponse = httpClient.execute(httpPost); 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     json = EntityUtils.toString(httpEntity); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    JSONObject jObj; 
    // try parse the string to a JSON object 
    try { 
     jObj = new JSONObject(json); 
    } catch (JSONException e) { 
     Log.e("JSON Parser", "Error parsing data " + e.toString()); 
    } 
    Log.v("debug", "JSON ready to parsing"); 
    return jObj; 
} 

public void parsingData(JSONObject json) { 
    try { 
     JSONArray data = json.getJSONArray("data"); 
     for (int i = 0; i < data.length(); i++) { 
      // Do your stuff, example : 
      JSONObject c = data.getJSONObject(i); 
      title = c.getString("title");     
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
     Log.v("debug", "Error during the connection HTTP"); 
     cancel(Boolean.TRUE); 
    } 
} 
0

第一QUS的回答 這裏U將得到例如用於JSON解析 https://www.learn2crack.com/2013/10/android-json-parsing-url-example.html

現在第二個問題的答案可能是這個

編輯:你需要你的Java數據類是完全相同的模型JSON。所以,你的

{"data":{"translations":[{"translatedText":"Bonjour tout le monde"}]}} 

變爲:

class DataWrapper { 
    public Data data; 

    public static DataWrapper fromJson(String s) { 
     return new Gson().fromJson(s, DataWrapper.class); 
    } 
    public String toString() { 
     return new Gson().toJson(this); 
    } 
} 
class Data { 
    public List<Translation> translations; 
} 
class Translation { 
    public String translatedText; 
} 

隨着對象模型變得更加複雜了org.json樣式代碼改變方向朝不可讀而GSON /傑克遜風格的對象映射仍然只是普通Java對象。