C# 为第三方库类(newtonsoft)的属性实现自定义Json序列化程序
我正在使用newtonsoft JSON.NET库序列化第三方库的一个对象,我无法修改它。此对象的某些属性序列化为空字符串,尽管它们具有值。因此,我想调用ToString来获取并序列化特定类型属性的值C# 为第三方库类(newtonsoft)的属性实现自定义Json序列化程序,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,我正在使用newtonsoft JSON.NET库序列化第三方库的一个对象,我无法修改它。此对象的某些属性序列化为空字符串,尽管它们具有值。因此,我想调用ToString来获取并序列化特定类型属性的值 namespace ThirdParty.Lib { public class Info { // When newtonsoft serialize a property of this type (CDataField) // a get an
namespace ThirdParty.Lib
{
public class Info
{
// When newtonsoft serialize a property of this type (CDataField)
// a get an empty string as value.
public CDataField Name { get; set; }
public CDataField Email { get; set; }
public string IdNNumber {get; set;}
}
}
看看这个答案,它可能会帮助你 还是在这里
最简单的方法是实现一个克隆类并将其序列化。比如:
namespace MyNameSpace
{
public class Info
{
// When newtonsoft serialize a property of this type (CDataField)
// a get an empty string as value.
public string Name { get; set; }
public string Email { get; set; }
public string IdNNumber {get; set;}
Info(ThirdiParty.Lib.Info info)
{
Name = info.Name.ToString();
Email = info.Email.ToString();
IdNumber = info.IdNumber;
}
}
}
var myinfo = new MyNameSpace.Info(
new ThirdiParty.Lib.Info()
{
IdNumber = "001254810",
Name = "John Doe",
Email = "johndoe@gmail.com"
}
);
您的问题是什么?如何使用JSON.NET实现自定义序列化程序,以调用CDATA字段中特定属性的ToString方法?我看不到实现自定义转换器的任何努力。你试过了吗?是的,我试过使用大卫建议的方法。这种方法的问题是WriteJson方法对每个属性都有调用,但是在我想要序列化的对象中,我有其他复杂的对象,我不想为这些对象编写逻辑,因为它们可以很好地序列化。
//json string output
{ IdNumber: "001254810", Name: "", Email: "" }
namespace MyNameSpace
{
public class Info
{
// When newtonsoft serialize a property of this type (CDataField)
// a get an empty string as value.
public string Name { get; set; }
public string Email { get; set; }
public string IdNNumber {get; set;}
Info(ThirdiParty.Lib.Info info)
{
Name = info.Name.ToString();
Email = info.Email.ToString();
IdNumber = info.IdNumber;
}
}
}
var myinfo = new MyNameSpace.Info(
new ThirdiParty.Lib.Info()
{
IdNumber = "001254810",
Name = "John Doe",
Email = "johndoe@gmail.com"
}
);