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
}

尝试创建 json 对象时它会爆炸,因为“page”的值是

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

当我尝试手动(使用直接 GET url)在浏览器上获取 json 时,我得到

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

当我手动复制此字符串时,它工作正常。

我该如何解决?

4

2 回答 2

3

您将返回一个 JSON 对象作为字符串,而您期望一个 JSON 对象...

有了杰克逊,这很容易解决:

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 回答
1

我认为您的代码太复杂了,请尝试这样做:

String page = EntityUtils.toString(response.getEntity());
于 2013-06-10T08:50:41.620 回答