2

我有一个非常基本的 ASP MVC 应用程序,它公开了一个静态的出版物列表(参见下面的代码和结果)。

代码:

    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);
    }

结果:

[{"Id":1,"Name":"战争与和平"},{"Id":2,"Name":"哈利波特"},{"Id":3,"Name":"Cat in帽子”}]

当我尝试在 Android 中使用它时,出现以下错误:

04-15 12:00:57.331: W/System.err(209): org.json.JSONException: JSONObject 文本必须在 [{"Id":1,"Name":" 的字符 1 处以 '{' 开头战争与和平"},{"Id":2,"Name":"哈利波特"},{"Id":3,"Name":"戴帽子的猫"}]

我可以删除开始 [ 和结束 ] 并阻止错误出现。另一种选择是将 { Publications: 逻辑放在 android 代码的开头,但这似乎应该已经存在。

如何更新 MVC 应用程序中的代码以生成 JSON 的“可使用”版本?

任何帮助是极大的赞赏。

4

2 回答 2

2

首先,您不应该在收到时修改您的 json 字符串,因为它可能会干扰解析。

其次,您的 Json 字符串是数组格式,因为它以 . 开头[和结尾]。因此,您应该使用JSONArray而不是使用JSONObject

于 2012-04-15T12:11:09.583 回答
1

我建议使用GSON。它使用简单、快速且准确。

于 2012-04-15T14:19:12.500 回答