2012-07-20 9 views
7

私はPHP Webサーバからアンドロイドモバイルにjsonデータを取得したいアプリケーションがあります。私が持っているものはURLであり、そのURLを押すと、
{"items":[{"latitude":"420","longitude":"421"}]}のようなjsonデータが得られます。しかし、私はAndroidのモバイルでこのjson形式を取得し、json形式から緯度と経度の値を取得したいと思います。jsonデータをPHPサーバからアンドロイドモバイルに移動する方法

どのように私たちはアンドロイドの携帯電話でそれを得ることができますか?事前に

おかげ..

+2

使用上のJSON形式のあなたの文字列ですHTTPClientのとデータを交換するには、Android上サーバ。あなたが立ち往生した場合は、コードを記入してください。 –

答えて

9

私は

JSONObject json = new JSONObject(jsonstring); 
JSONArray nameArray = json.names(); 
JSONArray valArray = json.toJSONArray(nameArray); 

JSONArray valArray1 = valArray.getJSONArray(1); 

valArray1.toString().replace("[", ""); 
valArray1.toString().replace("]", ""); 

int len = valArray1.length(); 

for (int i = 0; i < valArray1.length(); i++) { 

Country country = new Country(); 
JSONObject arr = valArray1.getJSONObject(i); 
country.setCountryCode(arr.getString("countryCode"));       
country.setCountryName(arr.getString("countryName")); 
arrCountries.add(country); 
} 




public static String convertinputStreamToString(InputStream ists) 
     throws IOException { 
    if (ists != null) { 
     StringBuilder sb = new StringBuilder(); 
     String line; 

     try { 
      BufferedReader r1 = new BufferedReader(new InputStreamReader(
        ists, "UTF-8")); 
      while ((line = r1.readLine()) != null) { 
       sb.append(line).append("\n"); 
      } 
     } finally { 
      ists.close(); 
     } 
     return sb.toString(); 
    } else { 
     return ""; 
    } 
} 
+0

これは何ですか 'convertinputStreamToString(is)'メソッドですか? –

+0

私はその方法を追加しました – Nirali

0

使用何かのように国の詳細情報を取得しています以下の最初の

{ 
"result": "success", 
"countryCodeList": 
[ 
    {"countryCode":"00","countryName":"World Wide"}, 
    {"countryCode":"kr","countryName":"Korea"} 
] 
} 

ここでURL接続

String parsedString = ""; 

    try { 

     URL url = new URL(yourURL); 
     URLConnection conn = url.openConnection(); 

     HttpURLConnection httpConn = (HttpURLConnection) conn; 
     httpConn.setAllowUserInteraction(false); 
     httpConn.setInstanceFollowRedirects(true); 
     httpConn.setRequestMethod("GET"); 
     httpConn.connect(); 

     InputStream is = httpConn.getInputStream(); 
     parsedString = convertinputStreamToString(is); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

JSON文字列を行います: JSON文字列がhttp://json.org/example.htmlから実際にあることを

try { 
    HttpParams params = new BasicHttpParams(); 
    HttpConnectionParams.setSoTimeout(params, 0); 
    HttpClient httpClient = new DefaultHttpClient(params); 

    //prepare the HTTP GET call 
    HttpGet httpget = new HttpGet(urlString); 
    //get the response entity 
    HttpEntity entity = httpClient.execute(httpget).getEntity(); 

    if (entity != null) { 
     //get the response content as a string 
     String response = EntityUtils.toString(entity); 
     //consume the entity 
     entity.consumeContent(); 

     // When HttpClient instance is no longer needed, shut down the connection manager to ensure immediate deallocation of all system resources 
     httpClient.getConnectionManager().shutdown(); 

     //return the JSON response 
     JSONObject object = new JSONObject(response.trim()); 
     JSONArray jsonArray = object.getJSONArray("items"); 
     if(jsonArray != null) { 
      for(int i = 0 ; i < jsonArray.length() ; i++) { 
       JSONObject object1 = (JSONObject) jsonArray.get(i); 
       String latitude = object1.getString("latitude"); 
       String longitude = object1.getString("longitude"); 
      } 
     } 
    } 
}catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

あなたのコードはcatchブロックに入っています...なぜそれは? –

+0

JSONの部分が異なっていることを除いて、例外が何であるか教えてください。このコードは私のために働いています。 – Nermeen

+0

例外は何かわかりませんが、キャッチブロックそれはトーストされますが、私は緯度と経度を焼くときにトーストしません。 –

1
String jsonStr = '{"menu": {' + 
     '"id": "file",' + 
     '"value": "File",' + 
     '"popup": {' + 
      '"menuitem": [' + 
      '{"value": "New", "onclick": "CreateNewDoc()"},' + 
      '{"value": "Open", "onclick": "OpenDoc()"},' + 
      '{"value": "Close", "onclick": "CloseDoc()"}' + 
      ']' + 
     '}' + 
     '}}'; 

。私はこの例のために見つけられた最高のものでした。

ここでは、それをJSONObjectを使用して開始できるようにしました。 - 簡単な例について

// grabbing the menu object 
JSONObject menu = jsonObj.getJSONObject("menu"); 


Reading =========> HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
      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(); 
       result=sb.toString();=======>Here result is the json string 


// these 2 are strings 
String id = menu.getString("id"); 
String value = menu.getString("value"); 

// the popop is another JSON object 
JSONObject popup = menu.getJSONObject("popup"); 

// using JSONArray to grab the menuitems from under popop 
    JSONArray menuitemArr = popupObject.getJSONArray("menuitem"); 

// lets loop through the JSONArray and get all the items 
for (int i = 0; i < menuitemArr.length(); i++) { 
// printing the values to the logcat 
Log.v(menuitemArr.getJSONObject(i).getString("value").toString()); 
Log.v(menuitemArr.getJSONObject(i).getString("onclick").toString()); 
} 

それがインスタンス化してimport org.json.JSONObject;

JSONObject jsonObj = new JSONObject(jsonStr); 

を、我々はJSON文字列からのデータの異なる部分を盗んために次の操作を行うことができます。これが動作するためには、次のインポートが必要になりますhere

+0

私のプログラムでこのjson文字列を取得する方法は? –

+0

あなたのリターン文字列をPHPでjson形式に変換することができます –

+0

私のPHPのURLはjson形式を返していますが、それは私のprogarmでそれをどう取得するのでしょうか? –

1

は、あなたのAndroidクライアントからのリクエストを送信]をクリックします

public static JSONObject getJSONFromHttpPost(String URL) { 

    try{ 
    // Create a new HttpClient and Post Header 
    DefaultHttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httpPost = new HttpPost(URL); 
    String resultString = null; 




     long t = System.currentTimeMillis(); 
     HttpResponse response = (HttpResponse) httpclient.execute(httpPost); 
     System.out.println("HTTPResponse received in [" + (System.currentTimeMillis()-t) + "ms]"); 
     // Get hold of the response entity (-> the data): 
     HttpEntity entity = response.getEntity(); 

     if (entity != null) { 
      // Read the content stream 
      InputStream instream = entity.getContent(); 

      // convert content stream to a String 
      resultString= convertStreamToString(instream); 
      instream.close(); 
      System.out.println("result String : " + resultString); 
      //resultString = resultString.substring(1,resultString.length()-1); // remove wrapping "[" and "]" 
      System.out.println("result String : " + resultString); 
      // Transform the String into a JSONObject 
      JSONObject jsonObjRecv = new JSONObject(resultString); 
      // Raw DEBUG output of our received JSON object: 
      System.out.println("<JSONObject>\n"+jsonObjRecv.toString()+"\n</JSONObject>"); 


      return jsonObjRecv; 
     } 
     }catch(Exception e){e.printStackTrace();} 


     return null; 

}

ここに文字列に

private static String convertStreamToString(InputStream is) { 

    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder sb = new StringBuilder(); 

    String line =""; 
    try { 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + "\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      is.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return sb.toString(); 
} 

を変換する機能は、今あなたがしなければならないすべてはechoサーバー

関連する問題