gpt4 book ai didi

java - 为什么将单个项目字符串解析为 JSONArray 失败

转载 作者:行者123 更新时间:2023-12-01 12:52:43 24 4
gpt4 key购买 nike

我想知道为什么我的解析代码不起作用。我正在尝试将网络服务器 (GET) 请求的响应获取到 JASONArray 中。这已经适用于多个项目(使用GET http://10.0.2.2:8000/exercises)。但是,如果我尝试接收单个项目 (GET http://10.0.2.2:8000/exercises/1),则会失败。我已经找到了问题的原因。 respJSON = new JSONArray(resp); 似乎在未被 [] 包围的字符串上失败,正如您从我的文章中看到的样本输出。有人能告诉我我在这里做错了什么吗?我应该使用专门为单一项目请求设计的不同方法来处理这个问题吗?我可以对字符串中的第一个字符进行简单的检查,但这是一种黑客行为,我不敢相信这是最好的方法。

(我只发布我使用的最少代码+输出)

HttpHost target = new HttpHost(host, port, "http");
HttpGet getRequest = new HttpGet(requestPath);
getRequest.setHeader("Content-type", "application/json");
getRequest.setHeader("Accept", "application/json");
response = httpClient.execute(target, getRequest);

entity = response.getEntity();
String resp = EntityUtils.toString(entity);
return new JSONArray(resp);

在像 http://10.0.2.2:8000/exercises 这样的请求上使用此代码会生成以下输出字符串,该字符串可以解析为 JSONArray (留下这里的实际数据,为了更好的比较):

[{"name": "Ringe", "duration": "20", "repeats": "no repeats", "creationtime": "2014-06-07 19:24:53.206000", "pausetime": "3", "alarmsound": "default", "description": "this is android description", "type": "repeats"}, {"name": "fingerkraft", "duration": "-1", "repeats": "10", "creationtime": "2014-06-07 18:08:03.576000", "pausetime": "20", "alarmsound": "default", "description": "asdasdasd", "type": "repeats"}, {"name": "ringe", "duration": "12", "repeats": "no", "creationtime": "2014-06-07 00:54:22.844000", "pausetime": "23", "alarmsound": "default", "description": "asdasdasd", "type": "duration"}]

但是,在 http://10.0.2.2:8000/exercises/1 上使用此方法会生成类似

的字符串
{"name": "ringe", "duration": "12", "repeats": "no", "creationtime": "2014-06-07 00:54:22.844000", "pausetime": "23", "alarmsound": "default", "description": "asdasdasd", "type": "duration"}

无法解析为 JSONArray (返回 null)。那么,这是预期的行为吗?我使用 django-rest-framework 构建了 API(显然是 REST)。

最佳答案

 String jsonStr = getJson();
JSONObject json = new JSONObject(jsonStr);

创建单个 Json 对象。

关于java - 为什么将单个项目字符串解析为 JSONArray 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101144/

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