我遇到了Json的问题。它将字节数组序列化为base64编码的字符串,例如,
"UpdateSeq":{"$type":"System.Byte[], mscorlib","$value":"AAAAAAAJHxw="},
但是在反序列化字符串时它会忽略base64编码的字符串。我得到一个字节数组,但它只是AAA等转换为字节数组。如果没有解码base64编码的字符串。
答案 0 :(得分:1)
以下测试代码适用于我使用Json.Net 6.0.4。
using System;
using System.Text;
using Newtonsoft.Json;
namespace JsonTest
{
class Program
{
static void Main(string[] args)
{
string str = "Testing";
Foo foo = new Foo
{
UpdateSeq = Encoding.UTF8.GetBytes(str)
};
JsonSerializerSettings settings = new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects,
Formatting = Formatting.Indented
};
string json = JsonConvert.SerializeObject(foo, settings);
Console.WriteLine(json);
Foo foo2 = JsonConvert.DeserializeObject<Foo>(json, settings);
string str2 = Encoding.UTF8.GetString(foo2.UpdateSeq);
Console.WriteLine();
Console.WriteLine(str == str2
? "strings are equal"
: "strings are NOT equal");
}
}
public class Foo
{
public byte[] UpdateSeq { get; set; }
}
}
输出:
{
"$type": "JsonTest.Foo, JsonTest",
"UpdateSeq": {
"$type": "System.Byte[], mscorlib",
"$value": "VGVzdGluZw=="
}
}
strings are equal