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

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

[ "{\"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); 

但我得到以下exception:

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

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

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

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

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

JSON对象遵循以下结构:

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

JSON数组遵循以下结构:

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

如果获得JSONObject,则文本必须以“{”exception开头。 然后首先检查你传递给JSONObject构造函数的内容。

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

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

代替

 JSONObject jsonObject = new JSONObject(jsonStr); 

使用

 JSONArray jsonArray = new JSONArray(jsonStr); 

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