【发布时间】:2017-11-21 13:11:10
【问题描述】:
我想将我的 json 字符串转换为字符串数组。我的 JSON 字符串有两个参数“href”和“name”。我想使用 java 创建“名称”参数值的字符串列表。我正在为我的应用程序使用 NetBeans。请帮我解决这个问题。我收到错误
线程“AWT-EventQueue-0”org.json.JSONException 中的异常:JSONArray 文本必须以 '[' 在 1 [字符 2 第 1 行] 开始
JSONArray arr = new JSONArray(response);
List<String> list = new ArrayList<String>();
for(int i = 0; i < arr.length(); i++){
list.add(arr.getJSONObject(i).getString("name"));
System.out.println(arr.getJSONObject(i).getString("name"));
}
这是我的 JSON 字符串
[
{
"href": "\/api\/rest\/v1\/protocols\/bacnet\/local\/objects\/analog-value\/1",
"name": "analogValue_1"
},
{
"href": "\/api\/rest\/v1\/protocols\/bacnet\/local\/objects\/analog-value\/9",
"name": "analogValue_9"
},
{
"href": "\/api\/rest\/v1\/protocols\/bacnet\/local\/objects\/analog-value\/2",
"name": "analogValue_2"
},
{
"href": "\/api\/rest\/v1\/protocols\/bacnet\/local\/objects\/analog-value\/8",
"name": "analogValue_8"
},
{
"href": "\/api\/rest\/v1\/protocols\/bacnet\/local\/objects\/analog-value\/7",
"name": "analogValue_7"
},
{
"href": "\/api\/rest\/v1\/protocols\/bacnet\/local\/objects\/analog-value\/3",
"name": "analogValue_3"
},
{
"href": "\/api\/rest\/v1\/protocols\/bacnet\/local\/objects\/analog-value\/6",
"name": "analogValue_6"
},
{
"href": "\/api\/rest\/v1\/protocols\/bacnet\/local\/objects\/analog-value\/5",
"name": "analogValue_5"
},
{
"href": "\/api\/rest\/v1\/protocols\/bacnet\/local\/objects\/analog-value\/4",
"name": "analogValue_4"
}
]
【问题讨论】:
-
响应包含什么?正如错误消息告诉我们它不是以“[”
-
由于某种原因,您的字符串不是有效的 JSON 字符串,因此您显示的 json 不是输入 json
-
我发布的Json string是我从rest api查询中得到的响应
-
我检查了你的例子,我的运行正常。所以问题是你的反应有点不同于这个
-
System.out.println(response.body().toString());得到 okhttp3.internal.http.RealResponseBody@66cdc1bd 不是实际响应为什么会这样?