我的这个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("\\]", "")
但即便如此,我也得到同样的例外。谁能指导我知道我做错了什么?
答案 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