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