Chr*_*son 2 c# base64 serialization json json.net
有人知道序列化对象时是否有可能将类中的某些值转换为Base64吗?我需要一种标记属性的方法,以指示它需要导出为Base64。例如:
using Newtonsoft.Json;
public class MyFoo {
public string Value1 { get; set; }
[ExportThisValueAsBase64]
public string Value2 { get; set; }
}
public void WriteJSON(MyFoo myFoo) {
var contentsToWriteToFile = SerializeObject(myFoo, Formatting.Indented);
}
Run Code Online (Sandbox Code Playgroud)
预期的输出将是:
{ "Value1": "A String", "Value2": base64encodedvalue }
Run Code Online (Sandbox Code Playgroud)
我还需要一种将值从base64读回到类中的string属性的方法。
正如评论中所建议的,我最后所做的就是创建一个 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)));
}
}
Run Code Online (Sandbox Code Playgroud)
现在在我的任何属性上,我都可以添加标题
[JsonConverter(typeof(CustomBase64Converter))]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1867 次 |
| 最近记录: |