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

时间:2015-09-04 10:38:29

标签: c# json json.net getjson

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

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()传递错误:

  

解析值时遇到意外的字符:S。路径'',第0行,第0位。

2 个答案:

答案 0 :(得分:1)

试试这个 -

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()));

应该可以正常工作。

答案 1 :(得分:1)

这会不简单吗?

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

(我无法弄清楚你使用这些流的原因。它与编码的某些问题有关吗?)