【问题标题】:EF 4.3 Json.Net 6.0.8 not taking programatic params in serializationEF 4.3 Json.Net 6.0.8 在序列化中不采用程序参数
【发布时间】:2015-06-02 12:24:51
【问题描述】:

我是第一次使用 json.net。这真的很简单,但我有一个问题:它似乎是 JsonConvert.SerializeObject(Model, Formatting.Indented) 应该不返回引用,并且通过使用 PreserveReferencesHandling = Ignore,它也应该处理 $id 属性,但我无法管理它。

我的 JsonConvert.SerializeObject 调用在剃刀视图 (MVC3) 中,我得到的 JSON 字符串是

  {"Items": [
    {
      "$id": \"1\",
      "ID_DB": 18,
      "ID_SAP": null,
      ...
    }]
}

也许,我需要更改 Web.config 或将更多配置设置放在我项目的另一个文件中。拜托,你能告诉我我错过了什么吗?

提前谢谢大家。

问候

Tistklehoff

【问题讨论】:

  • 在你的项目的 global.asax.cs 文件中可能有一些默认的配置代码或其他文件导致了这种情况,因为默认行为肯定不会像那样保留 $id 。寻找对 config.Formatters 或类似的调用。
  • 您好,非常感谢,我也得到了一些数据为 "DATA": { $ref:XX },所以,是时候看看 config.Formatters...跨度>
  • 我的 global.asax.cs 很清楚,因为我使用的是一次性转换,如下所示:(选项 1,单个 jsonconvert)stackoverflow.com/questions/13274625/how-to-set -custom-jsonserializersettings-for-json-net-in-mvc-4-web-api 有什么想法吗?
  • 嗯,您在链接中的问题是指 AspNet WebApi 和 MVC4,但您使用的是 MVC3 项目,对吗?我相信 MVC3 控制器使用 JsonDataContractsSerializer,它可能会在请求管道的某个地方拦截你。 msdn.microsoft.com/en-us/library/bb412179%28v=vs.110%29.aspx
  • 我认为您需要使用此线程中描述的方法之一来解决问题。 stackoverflow.com/questions/7109967/…

标签: json.net


【解决方案1】:

感谢您的所有提示 最后,我刚刚修复它: 我正在使用 EntityObject 生成器,所以我的数据不在 POCO 模型中。但是,如果我更改为 DbContext 生成器,Json.Net 将我的新 POCO 对象序列化为 JSON 没有任何问题。

无论如何,如果我错过了使用“EntityObject 样式”的任何代码,也许你们中的任何人都可以告诉我。我会尝试你的建议,现在这是一件值得骄傲的事情...... ;)

我的 Json.Net 代码在 EO 和 DbC 版本之间保持不变: 在 DataView.cshtml 中,只有这两行:

 JsonSerializerSettings config = new JsonSerializerSettings { MetadataPropertyHandling = MetadataPropertyHandling.Ignore, ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore, ContractResolver = new ExcludeEntityKeyContractResolver() };
 string json = JsonConvert.SerializeObject(Model, Formatting.Indented, config);

非常感谢您的宝贵时间。

问候。

Tistklehoff。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多