无法使用 Newton 反序列化对象 Json

Unable to Deserialize Object using Newton Json

我尝试使用以下代码,但输入参数为字符串时出现错误。

protected override object DeserializeCore(Type type, byte[] value)
{
     using (var ms = new MemoryStream(value))
     using (var sr = new StreamReader(ms, Encoding.UTF8))
     {
          var result = Newtonsoft.Json.JsonConvert.DeserializeObject(sr, type);
          return result;
     }
}

我把它作为 sr.ToString() 传递给错误:

Unexpected character encountered while parsing value: S. Path '', line 0, position 0.

试试这个 -

public class JsonObject
{
    public object Value { get; set; }
    public string Type { get; set; }
}

var s = "{'Value':{'something':'test'},'Type':'JsonData'}";
var o = DeserializeCore(typeof(JsonObject), Encoding.UTF8.GetBytes(s.ToCharArray()));

应该可以正常工作。

这不是更简单吗?

    protected override object DeserializeCore(Type type, byte[] value) {
        var str = System.Text.Encoding.UTF8.GetString(value);
        return JsonConvert.DeserializeObject(str, type);
    }

(我不明白你为什么要使用流。是否与编码问题有关?)