簡體   English   中英

為第三方庫類(newtonsoft)中的屬性實現自定義Json序列化程序

[英]Implement custom Json serializer for properties from thrid party library class (newtonsoft)

我正在使用newtonsoft JSON.NET庫序列化無法修改的第三方庫的對象。 盡管該對象的某些屬性具有值,但它們會序列化為空字符串。 因此,我只想調用ToString來獲取和序列化某些類型屬性的值。

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;}
    }
}

var info = new ThirdParty.Lib.Info
{
   IdNumber = "001254810",
   Name = "John Doe",
   Email = "johndoe@gmail.com"
};
var jsonstring = Newtonsoft.Json.JsonConvert.SerializeObject(transactionModel)

//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"
    }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM