JSONObject文本必须以"{"错误开头

Pra*_*mha 16 java json

我有一个来自我们的REST服务的JSON:

[
    "{\"category_name\":[\"Industry Components\"],\"categoryId\":[1]}",
    "{\"category_name\":[\"Business Components\"],\"categoryId\":[2]}",
    "{\"category_name\":[\"Utilities\"],\"categoryId\":[3]}",
    "{\"category_name\":[\"Tools\"],\"categoryId\":[4]}
]
Run Code Online (Sandbox Code Playgroud)

我正在使用java-json.jar来解析这个JSON,这是我试图传递JSON字符串的简单片段:

JSONObject jsonObject = new JSONObject(jsonStr);
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常:

org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
Run Code Online (Sandbox Code Playgroud)

首先我假设它是因为[]JSON中的字符,我试图替换如下:

String replacedStr = jsonStr.replaceAll("\\[", "").replaceAll("\\]", "")
Run Code Online (Sandbox Code Playgroud)

但即便如此,我也得到同样的例外.谁能指导我知道我做错了什么?

pop*_*shi 36

我想你不应该使用JSONObject,而应该使用JSONArray


Sun*_*B N 14

JSON对象遵循以下结构:

{
 "array": [
{
    color: "red",
    value: "#f00"
},
{
    color: "green",
    value: "#0f0"
}
]
}
Run Code Online (Sandbox Code Playgroud)

JSON数组遵循以下结构:

[
 { "firstName":"John" , "lastName":"Doe" }, 
 { "firstName":"Anna" , "lastName":"Smith" }, 
 { "firstName":"Peter" , "lastName": "Jones" }
]
Run Code Online (Sandbox Code Playgroud)