2013-10-16 43 views
14

我有这样的JSON从我们的REST服务的一个未来:一个JSONObject文本必须以“{”错误

[ 
    "{\"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("\\]", "") 

但即使如此,我得到相同的异常。任何人都可以请指导我知道我做错了什么?

+1

看起来你错过了最后一行的结束报价。 – par

回答

34

我想,你应该使用没有的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" } 
] 
+1

如果你要在一个对象中嵌入一个数组,它需要看起来像“{”key“:[value(s)]}' – par

+0

另外,我不能控制输入(即JSON),而我接收。 (而且我没有倒下你) –

+0

谢谢你的区别。 – Speakeasys

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); 
相关问题