2017-09-04 58 views
1

有沒有人知道在序列化對象時是否可以將某個類中的某些值轉換爲Base64,我需要一種方法來標記需要導出的屬性隨後的Base64Newtonsoft JSON在序列化時將屬性值轉換爲base64

public class myFoo { 

    string Value1 { get; set; } 

    [ExportThisValueAsBase64] 
    string Value2 { get; set; } 

} 

public void WriteJSON(){ 

    var contentsToWriteToFile = Newtonsoft.Json.JsonConvert.SerializeObject(myFoo, Newtonsoft.Json.Formatting.Indented); 

} 

預期產出將是

{ "Value1": "A String"; "Value2": base64encodedvalue } 

我還需要一種方法來重新讀出的值從BASE64回在類的字符串。

+0

創建自定義JsonConverter並標記屬性。 – Nkosi

回答

2

我所做的到底是,作爲評論建議,建立一個JsonConverter

internal class CustomBase64Converter : JsonConverter 
{ 
    public override bool CanConvert(Type objectType) 
    { 
     return true; 
    } 

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
    {     
     return System.Text.Encoding.UTF8.GetString((Convert.FromBase64String((string)reader.Value))); 
    } 

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) 
    {     
     writer.WriteValue(Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes((string)value))); 
    }   
} 

現在對我的任何性質的我可以再補充標題

[JsonConverter(typeof(CustomBase64Converter))] 
相關問題