Разбор нескольких строк JSON

1

Я хотел бы поблагодарить всех пользователей этого сообщества за то, что помог мне добраться до моего сегодняшнего проекта.

Мне теперь нужна ваша помощь еще раз. Пока что я могу установить соединение в своем проекте из этой ссылки JSON (УДАЛЕННЫЙ ДЛЯ КОНЦЕРНОВ КОНФИДЕНЦИАЛЬНОСТИ)

Проблема в том, что я могу только разобрать одну строку (firstName)

Вот мой код:

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 »);», это только позволяет мне вернуть один.
Показать ещё 7 комментариев
Теги:

1 ответ

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, это валидатор.

  • 0
    Спасибо, кодер. Я предполагаю, что мой вопрос действительно заключается в том, как мне его настроить, чтобы я мог просмотреть все строки в текстовом представлении. например String firstName = textview.getText (). toString (); ?
  • 0
    Почему бы вам не создать объект, который имеет все необходимое из json, добавить каждую строку к соответствующим значениям в объекте, а затем вернуть объект? Таким образом вы сохраните все свои ценности, к которым сможете получить доступ.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню