0

私は C# で Web アプリケーションを作成しており、JsonSerializer を使用して json を作成しています。今、私はAndroidアプリケーションで作業していて、jsonを読み込もうとしています.

私のAndroidアプリケーションでは、私のコードは

try {
            HttpClient client = new DefaultHttpClient();
            client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "android");
            HttpGet request = new HttpGet();
            request.setHeader("Content-Type", "application/json; charset=utf-8");
            request.setURI(new URI(uri));
            HttpResponse response = client.execute(request);
            in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

            StringBuffer sb = new StringBuffer("");
            String line = "";
            String NL = System.getProperty("line.separator");
            while ((line = in.readLine()) != null) 
            {
                sb.append(line + NL);
            }
            in.close();
            String page = sb.toString();


            JSONObject  jsonObject = new JSONObject(page);   // here it explodes
}

「ページ」の値が

"{\\"Key\\":\\"1\\",\\"RowVersion\\":[0,0,0,0,0,0,226,148].....

ブラウザーで json を手動で (直接 GET URL を使用して) 取得しようとすると、

"{\"Key\":\"1\",\"RowVersion\":[0,0,0,0,0,0,226,148]......

この文字列を手動でコピーすると、正常に動作します。

どうすれば修正できますか?

4

2 に答える 2

3

JSONオブジェクトを期待していたのに、JSONオブジェクトが文字列として返されました...

Jackson を使用すると、これは簡単に解決されます。

final ObjectMapper mapper = new ObjectMapper();
// JSON object as a string...
final JsonNode malformed = mapper.readTree(response.getEntity().getContent());
// To JSON object
final JsonNode OK = mapper.readTree(malformed.textValue());

これを行うか、JSON オブジェクトを返すようにサーバー側を修正してください。

于 2013-06-10T08:53:27.643 に答える