JSON 对象文本必须以“{”错误开头

2022-09-03 03:31:36

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

[
    "{\"category_name\":[\"Industry Components\"],\"categoryId\":[1]}",
    "{\"category_name\":[\"Business Components\"],\"categoryId\":[2]}",
    "{\"category_name\":[\"Utilities\"],\"categoryId\":[3]}",
    "{\"category_name\":[\"Tools\"],\"categoryId\":[4]}
]

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

JSONObject jsonObject = new JSONObject(jsonStr);

但我得到以下例外:

org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]

首先,我认为这是因为JSON中的和字符,我试图替换如下:[]

String replacedStr = jsonStr.replaceAll("\\[", "").replaceAll("\\]", "")

但即便如此,我也得到了同样的例外。任何人都可以引导我知道我做错了什么吗?


答案 1

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


答案 2

JSON 对象遵循以下结构:

{
 "array": [
{
    color: "red",
    value: "#f00"
},
{
    color: "green",
    value: "#0f0"
}
]
}

JSON 数组遵循以下结构:

[
 { "firstName":"John" , "lastName":"Doe" }, 
 { "firstName":"Anna" , "lastName":"Smith" }, 
 { "firstName":"Peter" , "lastName": "Jones" }
]