A JSONObject text must begin with '{' erro

2020-07-02 11:58发布

问题:

I have this JSON coming from one of our REST service:

[
    "{\"category_name\":[\"Industry Components\"],\"categoryId\":[1]}",
    "{\"category_name\":[\"Business Components\"],\"categoryId\":[2]}",
    "{\"category_name\":[\"Utilities\"],\"categoryId\":[3]}",
    "{\"category_name\":[\"Tools\"],\"categoryId\":[4]}
]

I am using java-json.jar to parse this JSON, this is the simple snippet where I am trying to pass above JSON string:

JSONObject jsonObject = new JSONObject(jsonStr);

But I am getting below exception:

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

First I assumed it's because of [ and ] characters in JSON and I tried to replace as below:

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

But even then I am getting same exception. Can anyone please guide me to know what I am doing wrong?

回答1:

I suppose that you should use not JSONObject, but JSONArray



回答2:

JSON Object follows the following Structure:

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

JSON Array follows the following Structure:

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


回答3:

instead

JSONObject jsonObject = new JSONObject(jsonStr);

use

JSONArray jsonArray = new JSONArray(jsonStr);

and may be read about Gson is a nice library for parsing and work with json



回答4:

If you get JSONObject text must begin with '{' exception. Then first off all check what did u pass to the JSONObject constructor.

You should pass the right json.txt file.So make sure what are u passing to jsonobject.

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

JSONObject jsonObject = new JSONObject(request);


标签: java json