Java JSON извлекает значение из выбранного имени в JSONObject из JSONArray - PullRequest
1 голос
/ 28 апреля 2011

Я пытаюсь получить значение из имени в JSONbject, который создан из JSONArray, JSONAarray создан из основного (корневого) JSONObject.

Вот JSON:

{"filelist": [{
"1": {
    "filename": "sample.mp3",
    "baseurl": "http://etc.com/"
}}]}

Я уверен, что JSON правильно отформатирован.

Вот Java (для Android SDK - это метод OnCreate в основном классе Activity):

    String jsonString = new String("{\"filelist\": [{ \"1\": { \"filename\": \"sample.mp3\", \"baseurl\": \"http://etc.com/\" }}]}");
JSONObject jObj = new JSONObject(jsonString);
JSONArray jArr = new JSONArray(jObj.getJSONArray("filelist").toString());
JSONObject jSubObj = new JSONObject(jArr.getJSONObject(0).toString());
textView1.setText(jSubObj.getString("filename"));

Спасибо, что посмотрели, и любые ответы очень ценятся.

Ответы [ 4 ]

4 голосов
/ 28 апреля 2011

Возможно, вы захотите упростить структуру JSON, но теперь вы можете прочитать ее следующим образом:

JSONObject jObj;
try {
  jObj = new JSONObject(jsonString);
  JSONArray jArr = jObj.getJSONArray("filelist");
  JSONObject jObj2 = jArr.getJSONObject(0);
  textView1.setText(jObj2.getJSONObject("1").getString("filename"));
} catch (JSONException e) {
  e.printStackTrace();
}

Если вы хотите иметь последовательные числа в массиве JSON, то вы можете рассмотреть их удаление:

{"filelist": [
  {
    "filename": "sample.mp3",
    "baseurl": "http://etc.com/"
  }
]}

Требуется на один шаг меньше:

JSONObject jObj;
try {
  jObj = new JSONObject(jsonString);
  JSONArray jArr = jObj.getJSONArray("filelist");
  JSONObject jObj2 = jArr.getJSONObject(0);
  textView1.setText(jObj2.getString("filename"));
} catch (JSONException e) {
  e.printStackTrace();
}
2 голосов
/ 28 апреля 2011

Для получения одного значения Вы можете использовать JSONTokener:

JSONObject object = (JSONObject) new JSONTokener("JSON String").nextValue();<br> String lstatus=object.getString("filename");

1 голос
/ 28 апреля 2011
0 голосов
/ 28 апреля 2011

например. получить имя файла сверху json string

try {
            String jsonString = new String("{\"filelist\": [{ \"1\": { \"filename\": \"sample.mp3\", \"baseurl\": \"http://www.hostchick.com/deemster/\" }}]}");
            JSONObject jObj = new JSONObject(jsonString);
            JSONArray jArr;
            jArr = jObj.getJSONArray("filelist");
            JSONObject jobj = jArr.getJSONObject(0);
            String filename =  jobj.getJSONObject("1").getString("filename");
            Toast.makeText(this, filename, Toast.LENGTH_SHORT).show(); 
        } catch (JSONException e) {
            e.printStackTrace();
        }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...