gpt4 book ai didi

android - JSONObject 到 String,API 10 和 API19 中的结果不同

转载 作者:行者123 更新时间:2023-11-30 03:03:27 26 4
gpt4 key购买 nike

我有以下代码用于将 JSONObject 转换为 StringEntity,我将通过 HTTP post 请求发送它。这在带有 KITKAT 的实际设备上运行良好,但是当我在带有 API10 的模拟器中尝试时,我收到来自服务器的错误。

JSONObject jsonRequest = new JSONObject();
//filling the jsonRequest with data
System.out.println(jsonRequest.toString());
StringEntity se = new StringEntity(jsonRequest.toString());

我已经意识到 JSONObject#toString 在 API10 和 API19 中的工作方式不同,这就是服务器返回 500 错误的原因。这是 println 输出的内容:

API19

{"expenses":[{"category":"660","attachment":{"data":"\/9j\/4...

API10

{"expenses":[{"category":"660","attachment":"{data=\/9j\/4...

注意等号 (=) 而不是冒号 (:) 和引号 (") 的不同位置。

json 应该是这样的

{
"expenses":[
{
"category":"123",
"attachment":{
"data":"akcsdc...sdc"
}
}
]
}

为什么会这样?有更好的方法吗?

谢谢。

最佳答案

最后我找到了问题所在,我将附件对象映射为 HashMap,我将其更改为 JSONObject,现在它可以工作了。

JSONObject jsonObj = new JSONObject();
Map<String, Object> attachmentMap = new HashMap<String, Object>();
attahmentMap.put("data", dataString);
jsonObj.put("attachment", attachmentMap);

改为

JSONObject jsonObj = new JSONObject();
JSONObject attachmentJson = new JSONObject();
attachmentJson.put("data", dataString);
jsonObj.put("attachment", attachmentJson);

关于android - JSONObject 到 String,API 10 和 API19 中的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22196044/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com