发生异常的代码:
public class ArenaBask
{
public int Id;
public string value;
public JsonData Dic;
}
public class EncodeDemo
{
public void Run()
{
string jsonStr = "{'Id':5658, 'value':'CCCC', 'Dic':{'a':123, 'b':'cdc'}}";
JsonReader reader = new JsonReader(jsonStr);
ArenaBask bask = JsonMapper.ToObject<ArenaBask>(reader);
Console.WriteLine(JsonMapper.ToJson(bask));
}
}
当JsonMapper.ToJson时发生错误.
原因:
JsonMapper中使用JsonWriter来序列化对象,本来每个key对应一个value,在读到key的时候writer中的context会将ExpectingValue字段置为true,表明接下来应当写入一个值,但是JsonMapper中的WriteValue函数中,将IJsonWrapper接口对象给特殊处理了,走另外一个方式了:
if (obj is IJsonWrapper)
{
if (writer_is_private)
writer.TextWriter.Write(((IJsonWrappe