0

私が使用したコードはlocalhostで完全に機能しますが、文字列からJSONオブジェクトへの解析中に表示されているエラーを解析する際に、Webサーバーでそれを実行しようとしました

私のJSONパーサーコードは

try {
    BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "utf-8"), 8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
    }
    is.close();
    json = sb.toString();
    Log.d("converted result", json);
} catch (Exception e) {
    Log.e("Buffer Error", "Error converting result " + e.toString());
}

// try parse the string to a JSON object
try {
    jObj = new JSONObject("{" + json +"}");
} catch (JSONException e) {
    Log.e("JSON Parser", "Error parsing data " + e.toString());
}

// return JSON String
return jObj;

LogCat情報

01-29 11:45:53.556: D/Search keyword:(921): saint louis
01-29 11:45:57.288: D/converted result(921): 
connected{"products":[{"pid":"406355","name":"852610 SOUTHCOUNTYMALL"},{"pid":"406356","name":"852611 SOUTHCOUNTYMALL"},{"pid":"406357","name":"852612 SOUTHCOUNTYMALL"}],"success":1}

01-29 11:45:57.288: E/JSON Parser(921): Error parsing data org.json.JSONException: Expected ':' after connected at character 11 of {connected{"products":[{"pid":"406355","name":"852610 SOUTHCOUNTYMALL"},{"pid":"406356","name":"852611 SOUTHCOUNTYMALL"},{"pid":"406357","name":"852612 SOUTHCOUNTYMALL"}],"success":1}
01-29 11:45:57.288: E/JSON Parser(921): }
4

2 に答える 2

4

エラーが明確に示しているように、JSON はその前に単語があるため有効ではありませんconnected

サーバーにその単語の送信を停止させる必要があります。

于 2013-01-29T17:07:02.900 に答える
1

次の JSON があります。

{connected{"products":[{"pid":"406355","name":"852610 SOUTHCOUNTYMALL"},{"pid":"406356","name":"852611 SOUTHCOUNTYMALL"},{"pid":"406357","name":"852612 SOUTHCOUNTYMALL"}],"success":1}

JSON の先頭に誤った表現 '{connected' があるため、これは無効な JSON 形式です。おそらく、次のような JSON を取得する必要があります。

{"products":[{"pid":"406355","name":"852610 SOUTHCOUNTYMALL"},{"pid":"406356","name":"852611 SOUTHCOUNTYMALL"},{"pid":"406357","name":"852612 SOUTHCOUNTYMALL"}],"success":1}

またはこのように:

{"connected":[VALUE], "products":[{"pid":"406355","name":"852610 SOUTHCOUNTYMALL"},{"pid":"406356","name":"852611 SOUTHCOUNTYMALL"},{"pid":"406357","name":"852612 SOUTHCOUNTYMALL"}],"success":1}

とにかく、Gson ライブラリを使用して JSON をビルドして取得することをお勧めします。

于 2013-01-29T17:24:33.927 に答える