конвертировать http: ответ Foursquare в JSON для Java - PullRequest
1 голос
/ 30 ноября 2011

Получив следующий ответ от Foursquare, при попытке разобрать его я получаю сообщение об ошибке ниже:

Ответ:

{"meta":{"code":200},"response":{"venues":[{"id":"4b1c3ce9f964a520d60424e3","name":"Folsom Lake Bowl","contact":{},"location":{"address":"511 East Bidwell","lat":38.67291745,"lng":-121.165447,"distance":39,"postalCode":"95630","city":"Folsom","state":"CA"},"categories":[{"id":"4bf58dd8d48988d1e4931735","name":"Bowling Alley","pluralName":"Bowling Alleys","shortName":"Bowling Alley","icon":{"prefix":"https://foursquare.com/img/categories/arts_entertainment/bowling_","sizes":[32,44,64,88,256],"name":".png"},"primary":true}],"verified":false,"stats":{"checkinsCount":592,"usersCount":284,"tipCount":2},"hereNow":{"count":0}}]}}

Ошибка:

Exception in thread "main" org.codehaus.jettison.json.JSONException: JSONObject["groups"] not found.
at org.codehaus.jettison.json.JSONObject.get(JSONObject.java:360)
at org.codehaus.jettison.json.JSONObject.getJSONArray(JSONObject.java:436)
at playaround.FoursquareAPI.get(FoursquareAPI.java:56)
at playaround.FoursquareAPI.main(FoursquareAPI.java:31)

Код:

StringBuilder sb = new StringBuilder();
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        for (String line; null != (line = reader.readLine());) {
            sb.append(line);
        }
        String output = sb.toString();
        JSONObject json = new JSONObject(output);
        JSONArray venues = json.getJSONObject("response").getJSONArray("groups").getJSONObject(0).getJSONArray("items");
        System.out.println(venues.length());

Все, что я хочу, это прочитать ответ Foursquare как JSONObject в Java. Любая помощь?

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

Считывая эту трассировку стека, JSON анализируется очень хорошо.

Проблема в том, что вы пытаетесь прочитать несуществующее свойство - "группы"

1 голос
/ 16 февраля 2012

По моему опыту, если вы получаете объект JSON - например, проблему, с которой я столкнулся, - анализ возвращенного поля LOCATION. Я начал со следующего кода:

JSONObject jsonObjLoc = new JSONObject(myLocation);

Если вы можете получить объект, просто обратитесь к параметру "has", например:

if(jsonObjLoc.has("myAddress")) { // name of field to look for 

           myTextAddress = jsonObjLoc.getString("address");
}

Я использую, чтобы защитить от пустого или нулевого поля, которое не возвращается.

...