【问题标题】:JSON.net Serialize C# object to JSON IssueJSON.net 将 C# 对象序列化为 JSON 问题
【发布时间】:2012-02-17 15:41:38
【问题描述】:

我正在尝试使用 JSON.net 库将 C# 对象序列化为 JSON。我遇到的问题是正在创建的字符串中有 &quot's。

下面是通过 JsonConvert.SerializeObject 返回的字符串:

{
    "ComId": "AAAiB+AAHAALOaFAAL",
    "CovId": "AAABC9AAPAAAZYUAAI",
    "EffectiveDate": "\\/Date(1329368400000-0500)\\/",
    "ExpirationDate": "\\/Date(1360990800000-0500)\\/",
    "State": "TX",
    "DeductibleAmount": 500.0,
    "DeductibleType": "PD"
}

通过JSONLint 运行字符串返回:

Parse error on line 1:
{    "ComId": &
-----^
Expecting 'STRING', '}'

下面是我尝试序列化为 JSON 的对象:

public class CommonInfoModel
{
    public virtual string ComId { get; set; }
    public virtual string CovId { get; set; }

    [Display(Name = "Effective Date")]
    public virtual DateTime EffectiveDate { get; set; }

    [Display(Name = "Expiration Date")]
    public virtual DateTime ExpirationDate { get; set; }

    [Display(Name = "State")]
    public virtual string State { get; set; }

    [Display(Name = "Deductible Amount")]
    public virtual decimal DeductibleAmount { get; set; }

    [Display(Name = "Deductible Type")]
    public virtual string DeductibleType { get; set; }
}

我做错了吗?我已经搜索过,似乎其他使用该方法的人得到了更清晰的字符串!提前感谢您的宝贵时间!

【问题讨论】:

  • 你为什么不替换那个" from " 然后解析它
  • 你是如何使用 JSON 的?你是从控制器动作中返回它吗?你试过return Json(model);吗?
  • 这是我在运行 JsonConvert.SerializeObject(new CommonInfoModel()) 时得到的 {"ComId":null, "CovId":null,"EffectiveDate":"\/Date(-62135596800000+0200)\/", "ExpirationDate":"\/Date(-62135596800000+0200)\/", "State":null, "DeductibleAmount":0.0,"DeductibleType":null}。序列化后你必须对你的字符串做一些事情
  • 你有像 SerializeObject(Object, Formatting, JsonSerializerSettings) 这样的方法来处理格式化/设置吗?
  • @jrummell 这是我正在进行的试运行,但我正在尝试将 MVC 模型转换为 JSON 对象并通过 JQuery 传递它。即 $.ajax({ data: { json : "@JsonConvert.SerializeObject(Model)" } ....

标签: c# asp.net-mvc serialization json.net


【解决方案1】:

您的 json 字符串正在被 HTML 编码。由于您在视图中呈现 json,因此您可以使用 @Html.Raw() 帮助器来防止它被编码。

var data = { json : "@Html.Raw(JsonConvert.SerializeObject(Model))" };

【讨论】:

  • 谢谢,通过使用 Html.Raw 我能够清理字符串!
  • 这太棒了!谢谢!
  • 对此要小心,@Html.Raw 会绕过 Razor 的验证,这会将您的页面打开到 XSS 漏洞(如果您的模型具有带有
  • 这对我有用:var model = @Html.Raw(JsonConvert.SerializeObject(Model));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
  • 2022-01-14
  • 2013-07-09
相关资源
最近更新 更多