2016-05-22 4 views
1

私は送ったIDに応じて、料理のIDと名前を取得するために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関数は、ZomatoのAPIとユーザーキーへのリンクを取得します。 (Zomato APIにはキーが必要です)

"acesso.getCuisines(310)"は値 "310"を送信し、メソッド "getCuisines"はウェブサイトで見つけることができるすべての施設でjson文字列を返す必要があります(310ポルトガル、ポルトガルのIDです)。

ただし、「[]」は出力に表示されます(引用符は含まれません)。

[ 
{"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

"aces"という文字列を印刷しようとすると、とにかく "[]"が印刷されます。私は問題が何であるか分かりません –

+0

私が@DanGetzではない場合は申し訳ありません。私がしたいのは、getCuisineが返すJSON文字列を出力することです。 –

答えて

1

System.out.println(aces);場合はプリント[]、その後、ZomatoのAPIが310が有効idでないことを意味する空の応答を、返しています。しかし、acesが空でない文字列を出力し、JSONストリングである場合は、次の解決方法が有効です。

Zomato APIで受け取ったJSON文字列を解析していません。代わりに、空の新しいJSONObjectを作成しています。

次の操作を実行してみてください。

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

仮定:

+0

お返事ありがとうございます。私はそれを試して、私はこのエラーを取得_Exceptionスレッド "メイン" java.lang.ClassCastException:org.json.simple.JSONArrayはorg.jsonにキャストすることはできません。simple.JSONObject_ –

+0

が答えを更新しました。 'JSONObject'を' JSONArray'に置き換えて、やり直してください。 –

+0

もう一度ありがとうございます。もう一度[]を印刷しました。私は問題がAPIそのものになければならないことをますます確信しています。私は同僚と話をして、それが適切に印刷されているかどうかを確認します。あなたの時間を無駄にして申し訳ありません –

関連する問題