java で api-stackexchange を使用しようとしていますが、リクエストを実行して json パーサーでレスポンスを解析しようとすると、エラーが発生します。
public ArrayList<Question> readJsonStream(InputStream in) throws IOException {
JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
reader.setLenient(true);
try {
System.out.println(reader.nextString()); // � special character
return readItem(reader);
} finally {
reader.close();
}
}
public ArrayList<Question> readItem(JsonReader reader) throws IOException {
ArrayList<Question> questions = new ArrayList<Question>();
reader.beginObject();
while (reader.hasNext()) {
System.out.println("here");//not print the error is before
String name = reader.nextName();
if (name.equals("items")) {
questions = readQuestionsArray(reader);
}
}
reader.endObject();
return questions;
}
public final static void main(String[] args) throws Exception {
URIBuilder builder = new URIBuilder();
builder.setScheme("http").setHost("api.stackexchange.com").setPath("/2.0/search")
.setParameter("site", "stackoverflow")
.setParameter("intitle" ,"workaround")
.setParameter("tagged","javascript");
URI uri = builder.build();
String surl = fixEncoding(uri.toString()+"&filter=!)QWRa9I-CAn0PqgUwq7)DVTM");
System.out.println(surl);
Test t = new Test();
try {
URL url = new URL(surl);
t.readJsonStream(url.openStream());
} catch (IOException e) {
e.printStackTrace();
}
}
エラーは次のとおりです。
com.google.gson.stream.MalformedJsonException: 行 1 列 19 に期待されるリテラル値
Json の例を次に示します。
{
"items": [
{
"question_id": 10842231,
"score": 0,
"title": "How to push oath token to LocalStorage or LocalSession and listen to the Storage Event? (SoundCloud Php/JS bug workaround)",
"tags": [
"javascript",
"javascript-events",
"local-storage",
"soundcloud"
],
"answers": [
{
"question_id": 10842231,
"answer_id": 10857488,
"score": 0,
"is_accepted": false
}
],
"link": "http://stackoverflow.com/questions/10842231/how-to-push-oath-token-to-localstorage-or-localsession-and-listen-to-the-storage",
"is_answered": false
},...
リクエストの URL は次のとおりです。
だから問題は何ですか?Json は本当に不正な形式ですか? または、私は何か正しくないことをしましたか?
ありがとう、アンソニー
編集:
問題はリクエストにあると確信しています。サーバーApacheでホストしているテキストファイルに、ブラウザーを介してリクエストの応答を貼り付けます。正常に動作します。応答の Json を解析できます。