【问题标题】:Convert IEnumerable<T> into JSON objects将 IEnumerable<T> 转换为 JSON 对象
【发布时间】:2012-06-02 17:41:36
【问题描述】:

使用 JSON.NET,我可以将通用列表序列化为 JSON 字符串:

 return Json(new { success = true, data = JsonConvert.SerializeObject(units) });

但是如何将通用列表序列化为 JSON 对象。这样做的好处是我在客户端不需要这个:

var jsonData = $.parseJSON(units);

【问题讨论】:

    标签: c# json serialization json.net generic-list


    【解决方案1】:

    不要序列化对象的一部分,序列化整个对象:

    return Content(JsonConvert.SerializeObject(new { success = true, data = units }), "text/javascript");
    

    内置的Json 方法经过硬编码以返回使用内置(有些限制).NET JavaScript 序列化程序的结果。如果您想获得像这样易于使用的东西,请将您自己的“Json”方法添加到您的基本控制器类中,该方法与 Json.NET 执行相同的操作。

    【讨论】:

    • 使用你的代码我得到一个解析器错误。根本不需要序列化success = true。 success = true 以通用方式在 response.success 中进行检查,我无法更改该处理方式。
    • 您的回答总体上是正确的。它只是不适合我成功 = true 的这种特殊情况。但是我做了很多其他的 getJSON,我不需要这个 success= true 的东西。
    • @Elisa:一个对象必须以某种方式序列化才能通过 HTTP 传递。你明白我在这里做什么吗?如果您遇到解析错误,请继续修复它,因为我实际上并没有尝试过。
    【解决方案2】:

    查看this link
    我个人使用 json2.js 和 JSON.parse/stringify 将字符串转换为 ojbects,反之亦然

    p.s 它仍然在客户端完成,但它只是要添加的另一行代码

    【讨论】:

    • 为什么不只是:JSON.parse(jsonString);它并非在所有浏览器中都受支持, jquery.parseJSON(jsonstring) 是我已经使用的首选方式,并且在您引用的链接中也说过;-)
    • @Elisa,当我正在寻找一种方法来进行双向转换时,除了 json2.js 之外,我没有找到任何有效的方法(找不到原始的 SO 链接,所以我使用了这个)。但是我记得读过,即使是 jquery 的创建者也建议使用 json2.js
    • stackoverflow.com/questions/3238842/… 阅读解决方案。这真有趣。您的 json2.js 提示已放在我的优化列表中以备后用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 2021-12-02
    • 2018-08-04
    • 1970-01-01
    相关资源
    最近更新 更多