2017-09-04 258 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))] 
相关问题