I have a very basic ASP MVC application exposing a static list of publications (see code and result below).
Code:
public JsonResult Index()
{
List<Publication> list = new List<Publication>() {
new Publication() { Id = 1, Name = "War and Peace" },
new Publication() { Id = 2, Name = "Harry Potter" },
new Publication() { Id = 3, Name = "Cat in the Hat" }
};
return this.Json(list, JsonRequestBehavior.AllowGet);
}
Result:
[{“Id”:1,”Name”:”War and Peace”},{“Id”:2,”Name”:”Harry Potter”},{“Id”:3,”Name”:”Cat in the Hat”}]
When I attempt to consume it in Android I get the following error:
04-15 12:00:57.331: W/System.err(209): org.json.JSONException: A JSONObject text must begin with ‘{‘ at character 1 of [{“Id”:1,”Name”:”War and Peace”},{“Id”:2,”Name”:”Harry Potter”},{“Id”:3,”Name”:”Cat in the Hat”}]
I can remove the starting [ and ending ] and it stops the error from appearing. The other option is to put the { publications: logic at the beginning of the android code, but that seems like it should already be there.
How can I update the code in the MVC application to produce a “ready to be consumed” version of JSON?
Any help is greatly appreciated.
First, you shouldn’t modify your json string when received, because it may mess up with the parsing.
Second, your Json string is in array format because it starts with
[and ends with]. So, instead of using JSONObject, you should use JSONArray.