2012-03-13 16 views
1

私はこのプロジェクトの現時点での理解を深めるために、このコミュニティのすべてのユーザーに感謝したいと思います。複数のJSON文字列を解析する

もう一度あなたの助けが必要です。これまでのところ、私はここで

が私のコードである

問題は、私は1つの文字列を解析することしかできています(firstNameの)である(プライバシーの問題のために取り外さ)このJSONのリンクから私のプロジェクトでの接続を確立できています:

public class JSONActivity extends Activity { 
static TextView http; 
HttpClient client; 
JSONObject json; 

    final static String URL = "REMOVED FOR PRIVACY CONCERNS 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     http = (TextView) findViewById(R.id.http); 
     client = new DefaultHttpClient(); 
     new Read().execute("firstName"); 

    } 

    public JSONObject getpw(String password) throws ClientProtocolException, 
      IOException, JSONException { 
     StringBuilder url = new StringBuilder(URL); 
     url.append(password); 

     HttpGet get = new HttpGet(url.toString()); 
     HttpResponse r = client.execute(get); 
     int status = r.getStatusLine().getStatusCode(); 
     if (status == 200) { 
      HttpEntity e = r.getEntity(); 
      String data = EntityUtils.toString(e); 
      JSONObject getname = new JSONObject(data); 

      return getname; 
     } else { 
      Toast.makeText(JSONActivity.this, "error", Toast.LENGTH_SHORT); 
      return null; 
     } 
    } 

    public class Read extends AsyncTask<String, Integer, String> { 

     @Override 
     protected String doInBackground(String... arg0) { 
      // TODO Auto-generated method stub 
      try { 
       json = getpw("trustme"); 
       return json.getString("firstName"); 
      } catch (ClientProtocolException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      // TODO Auto-generated method stub 
      http.setText(result); 
     } 
    } 
} 

「firstName」ではなく複数の文字列を解析するにはどうすればよいですか。

+0

doInBackgroundのすべてを解析して文字列の配列またはフィールドを返してもらえませんか? –

+0

それは私も仮定したものですが、私のコードでは "return json.getString(" firstName ");というように思えます。 –

+0

ReadクラスをAsyncTask >から派生させることができると思います。doInBackgroundは、ArrayList を返さなければなりません。必要なときに移入して返します。 –

答えて

1

あなたは次の操作を行って、それをすべてを取得することができます:

String firstname = json.getString("firstName"); 
String lastname = json.getString("lastName"); 
int checkedIn = json.getInt("checkedIn"); 
int updated = json.getInt("checkedindatetime"); 

JSONObject address = json.getJSONObject("address"); 
String streetaddress = address.getString("streetAddress"); 
String city = address.getString("city"); 
etc... 

JSONArray phoneNumbers = json.getJSONArray("phoneNumber"); 
String type = phoneNumbers.getJSONObject(0).getString("type"); 
etc... 

は、この情報がお役に立てば幸いです。

jsonを見るための優れたリソースは、validatorです。

+0

ありがとう、コーダー。私は私の質問は本当に、どのように私はテキストビュー内のすべての文字列を表示することができますそれを設定すると思います。たとえば、String firstName = textview.getText()。toString();などです。 ? –

+0

jsonから必要なものをすべて持っているオブジェクトを作成して、各文字列をオブジェクトのそれぞれの値に追加してからオブジェクトを戻すのはなぜですか?そうすれば、アクセスできるすべての値が保存されます。 – coder

+0

はとても簡単に聞こえますが、簡単に聞いたことがあります。私はちょっと突っ込んで、あなたの提案を試してみましょう。ありがとう! –