Помогите разобрать JSON и показать результаты (Android) - PullRequest
0 голосов
/ 28 июля 2011

Я создал файл JSON и загрузил его на домен, моя цель - проанализировать этот документ и получить информацию, но я что-то не так делаю, это мой файл JSON:

{
    "Show" : {
        "id" : "abcde123",
        "name" : "Traviata",
        "date" : "September 15, 2011"
    }
}

ЭтоJava-код, который я использую для анализа JSON:

private void parse(){
    try {

        URL eventsJSON = new URL("http://www.site.com/test/sample.json");
        URLConnection tc = eventsJSON.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(tc.getInputStream()));

        String line;
        while ((line = in.readLine()) != null) {
            JSONArray jArray = new JSONArray(line);

            for (int i = 0; i < jArray.length(); i++) {
                eventsJSONObject = (JSONObject) jArray.get(i);

            }
        }

        JSONArray eventsArray = eventsJSONObject.getJSONArray("Show");

    //name of the show
    Log.d("LOG", jArray.getJSONObject(0).getString("name").toString());

    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

Но класс не работает .. Кто-нибудь может мне помочь, пожалуйста?Спасибо!!!!:)

РЕДАКТИРОВАТЬ: Это рабочий код, но я не могу заставить его работать при разборе JSON из файла

 String jString = "{\"Show\" : {\"from\" : \"June 12, 2011\",\"id\" : \"abcde123\",\"name\" : \"Traviata\"}}";


 JSONObject jObject = new JSONObject(jString);
 JSONObject eventsObject = jObject.getJSONObject("Shows");

 String eventId = eventsObject.getString("id");
 String eventName = eventsObject.getString("name");
 String eventDateFrom = eventsObject.getString("from");

как мне реализоватьчитатель с буферизацией и запоминание кода JSON в строке jString?

1 Ответ

2 голосов
/ 28 июля 2011

Это:

JSONArray eventsArray = eventsJSONObject.getJSONArray("Show");

должно быть проанализировано как JSONObject:

JSONObject eventObj = eventsJSONObject.getJSONOnject("Show");

Остальное должно быть простым.«show» представляет объект с 3 полями, а не массив.

Кстати, массив будет выглядеть так:

{
    "Show" : [
        "id" : "abcde123",
        "name" : "Traviata",
        "date" : "September 15, 2011"
    ]
}
...