2016-05-22 4 views
1

Я делаю школьный проект (оповещение для новичков), где мне нужно использовать сайт zomato для получения идентификатора и имени кухни в зависимости от идентификатора, который я отправляю. Это код в демо-файле:Как напечатать строку json?

WebServiceConnection web = new WebServiceConnection("xxxxxxxxxxxx"); 
AcessoDados acesso = new AcessoDados("https://api.zomato.com/v1/cuisines.json", web); 
String aces = acesso.getCuisines(310); 
JSONObject obj = new JSONObject(); 
System.out.println(obj.get(aces)); 

Все описанные здесь методы были сделаны нашим учителем.

Функция WebServiceConnection и AcessoDados получают ссылку на API Zomato и ключ пользователя. (Для Zomato API требуется ключ для работы)

«acesso.getCuisines (310)» отправляет значение «310», а метод «getCuisines» должен возвращать строку json со всеми заведениями, которые он может найти на своем веб-сайте (310 - это идентификатор для Порту, Португалия).

Однако он печатает только «[]» на выходе (без кавычек). Он должен напечатать что-то вроде этого:

[ 
{"cuisine_name":"African","cuisine_id":152}, 
{"cuisine_name":"American","cuisine_id":1}, 
{"cuisine_name":"Angolan","cuisine_id":951}, 
{"cuisine_name":"Cafe","cuisine_id":30}, 
(...) 
] 

Я не могу найти то, что проблема или если я делаю какие-либо очевидную ошибку. Я что-то упустил?

+0

Если у вас уже есть 'String', почему бы не просто напечатать что? Я что-то упускаю? Вы действительно пытаетесь * разбирать * строку или * печатать * это? –

+0

Если я попытаюсь напечатать строку «тузы», она все равно будет печатать «[]». Я не уверен, в чем проблема –

+0

Извините, если я не был конкретным @DanGetz. Я хочу, чтобы напечатать строку json, возвращаемую getCuisine. –

ответ

1

Если System.out.println(aces); печатает [], то API Zomato является возвращение пустого ответа, а это значит, что 310 не является допустимым id. Но если aces печатает непустую строку и является строкой JSON, тогда должно работать следующее решение.

Вы не разбираете строку JSON, полученную API Zomato. Вместо этого вы создаете новый JSONObject, который пуст.

Попробуйте сделать следующие:

JSONObject obj = null; 
try { 
    obj = (JSONArray) JSONValue.parseWithException(aces); 
    System.out.println(obj); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

Предположения:

+0

Благодарим вас за ответ. Я попробовал это, и я получаю эту ошибку _Exception в потоке «main» java.lang.ClassCastException: org.json.simple.JSONArray не может быть передан в org.json.simple.JSONObject_ –

+0

обновил ответ. Замените 'JSONObject' на' JSONArray' и повторите попытку. –

+0

Еще раз спасибо. Он снова напечатал «[]». Я все больше убеждаюсь, что проблема должна быть в самом API. Я собираюсь поговорить с моими коллегами и посмотреть, удастся ли им правильно напечатать его. Извините за то, что тратишь свое время –