JSONObject文本必须以“{”错误开头

时间:2013-10-16 09:01:17

标签: java json

我的这个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 个答案:

答案 0 :(得分:36)

我认为你不应该使用JSONObject,而应该使用JSONArray

答案 1 :(得分:14)

JSON对象遵循以下结构:

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

JSON数组遵循以下结构:

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

答案 2 :(得分:0)

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

你应该传递正确的json.txt文件。确保你传递给jsonobject的是什么。

{"Name":"John","Ticket":"New\" York - Washington"} <nil>

答案 3 :(得分:0)

而不是

JSONObject jsonObject = new JSONObject(jsonStr);

使用

JSONArray jsonArray = new JSONArray(jsonStr);

并且可以阅读关于Gson是一个很好的库,用于解析和使用json