c# – JSON.Net串行器忽略JsonProperty?

c# – JSON.Net串行器忽略JsonProperty?,第1张

概述我有以下实体类: public class FacebookComment : BaseEntity{ [BsonId(IdGenerator = typeof(ObjectIdGenerator))] [BsonRepresentation(MongoDB.Bson.BsonType.ObjectId)] [JsonProperty("_id")] public 我有以下实体类:
public class FacebookComment : BaseEntity{    [BsonID(IDGenerator = typeof(ObjectIDGenerator))]    [BsonRepresentation(MongoDB.Bson.BsonType.ObjectID)]    [JsonProperty("_ID")]    public ObjectID ID { get; set; }    public int? OriginalID { get; set; }    public DateTime Date { get; set; }    public string Message { get; set; }    public string Sentiment { get; set; }    public string Author { get; set; }}

当该对象被序列化为JsON时,我希望将ID字段写为“_ID”:{…}. AFAIK,我只需要将所需的属性名称传递给JsonProperty属性;我应该很好去.但是,当我调用JsonConvert.SerializeObject;它似乎忽略了我的属性,并呈现出来:

{    Author: "Author name",Date: "/Date(1321419600000-0500)/",DateCreated: "/Date(1323294923176-0500)/",ID: {        CreationTime: "/Date(0)/",Increment: 0,Machine: 0,PID: 0,Timestamp: 0    },Message: "i like stuff",OriginalID: null,Sentiment: "Positive"}

您可以看到,ID字段正在使用错误的字段名称进行呈现.

有任何想法吗?在这个问题上工作了一个小时;不知道为什么串行器似乎忽略了我的JsonProperty.

任何建设性的输入都不胜感激.

解决方法 简短答案:确保所有程序集都引用相同的JsON.NET DLL.可能发生的情况是您正在一个程序集中从一个DLL中应用[JsonProperty],并从不同的程序集序列化对象,该程序集正在寻找不同的[JsonProperty],但CLR对象类型不同,因此它被有效地忽略.

更长的答案:我只是有这个问题,但幸运的是我有一个类与JsonProperty一起工作,一个没有这样我可以做一些侦探工作.

我将非工作阶层剥离到最低限度,并将其与工人阶级进行比较,看不出任何差异 – 除了非工作阶级在不同的组合中.

当我把课程转移到另一个组件时,它应该是完美的.

我捅了一下试图查看JsON序列化的命名空间,但这似乎并不适用,所以我看了这些引用,当然我已经在我的实体DLL和NUGET 4.5版本中引用了一个旧的JsONNET3.5 dll在我的主要项目文件.

这给了我两个[JsonProperty]属性的实例(这只是一个常规类),只是因为它们被命名为相同,并不意味着串行器甚至会识别属性.

总结

以上是内存溢出为你收集整理的c# – JSON.Net串行器忽略JsonProperty?全部内容,希望文章能够帮你解决c# – JSON.Net串行器忽略JsonProperty?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1257908.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存