16

我的这个 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("\\]", "")

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

4

4 回答 4

37

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

于 2013-10-16T09:02:29.630 回答
14

JSON 对象遵循以下结构:

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

JSON 数组遵循以下结构:

[
 { "firstName":"John" , "lastName":"Doe" }, 
 { "firstName":"Anna" , "lastName":"Smith" }, 
 { "firstName":"Peter" , "lastName": "Jones" }
]
于 2013-10-16T09:04:08.133 回答
1

反而

JSONObject jsonObject = new JSONObject(jsonStr);

采用

JSONArray jsonArray = new JSONArray(jsonStr);

并且可能会读到 Gson 是一个很好的库,用于解析和使用 json

于 2018-06-18T16:51:12.990 回答
0

如果你得到 JSONObject 文本必须以 '{' 开头的异常。然后首先检查你传递给 JSONObject 构造函数的内容。

您应该传递正确的 json.txt 文件。因此请确保您传递给 jsonobject 的内容。

String request = FileUtils.readFileToString(new File("/home/achaure/Downloads/Amol/KountRestTest/Documents/request.txt"));

JSONObject jsonObject = new JSONObject(request);
于 2017-10-16T07:37:07.550 回答