class HasBytes
{
public byte[] Bytes { get; set; }
}
var bytes = new HasBytes { Bytes = new byte[] { 1, 2, 3, 4 } };
var json = JsonConvert.SerializeObject(bytes);
然后我可以用这种稍微复杂的方式再读一遍:
TextReader textReader = new StringReader(json);
JsonReader jsonReader = new JsonTextReader(textReader);
var result = (HasBytes)JsonSerializer.Create(null)
.Deserialize(jsonReader, typeof(HasBytes));
一切都很好。但如果我先把
jsonReader
变成一个
JToken
var jToken = JToken.ReadFrom(jsonReader);
JsonReader
把它包起来
JTokenReader
:
jsonReader = new JTokenReader(jToken);
然后反序列化抛出一个异常:“Expected bytes but got string”。
新的JsonReader不应该在逻辑上等同于原来的JsonReader吗?为什么“生的”
JsonTextReader
能够将字符串视为64字节的基数组
JTokenReader公司
版本没有?