我尝试使用以下代码,但输入参数的错误为字符串。
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位。
答案 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);
}
(我无法弄清楚你使用这些流的原因。它与编码的某些问题有关吗?)