【问题标题】:.NET Core Object JSON Serialization to Javascript format.NET Core 对象 JSON 序列化为 Javascript 格式
【发布时间】:2018-06-12 03:24:41
【问题描述】:

我在将 C# 对象序列化为纯 JSON 字符串时遇到了一些问题。

我使用 JsonConvert(Newtonsoft 的)将模型格式化为 JSON。问题是在某些 Javascript 中使用了 JSON 字符串,但格式不好,因为引号中的格式被写为“&quote;”代替 ”'”。关于如何解决这个问题的任何想法?

//...
@{
    var dataJson = JsonConvert.SerializeObject(Model);
}
//...

<script>
    function ChangeGroup(type) {
        $.ajax({
            url: //...,
            data: @dataJson
        });
    }
</script>

我得到的是这样的:

一些我忘记设置的格式选项?

【问题讨论】:

  • @CamiloTerevinto 这样做给了我数据部分中模型的类型。
  • 请重新打开这个问题。在 ASP.NET Core 中有更好的方法来做到这一点(副本中不可用)

标签: javascript c# json asp.net-core json.net


【解决方案1】:

你可以这样做:

@{
  var dataJson = new HtmlString(JsonConvert.SerializeObject(Model));
}

默认情况下,ASP.Net Core 将在呈现 @ 表达式之前进行 HTML 编码,除非表达式的计算结果为具有接口 IHtmlContent(HtmlString 具有)的类型。另一种方式是写

@Html.Raw(dataJson)

【讨论】:

    【解决方案2】:

    在 ASP.NET Core 中有一个更短、更易于使用和记忆的方法:

    @Json.Serialize(Model);
    

    当分配给一个 JavaScript 值时,生成的 JavaScript 是有效的:

    <script>
        var model = @Json.Serialize(model);
    </script>
    

    有了这个,您不必担心 HTML 转义字符。

    【讨论】:

    • @ChristianGollhardt 什么?问题是如何序列化 JSON 以便可以在 javascript 中使用
    • 我的错,没注意到IJsonHelper
    【解决方案3】:

    我使用以下方法将数据从我的模型中获取到 JS 对象中。以为我将来会发帖以可能对某人有所帮助...

    var items = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.Items));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 2012-03-07
      相关资源
      最近更新 更多