无法使用 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);
}
(我不明白你为什么要使用流。是否与编码问题有关?)
我尝试使用以下代码,但输入参数为字符串时出现错误。
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);
}
(我不明白你为什么要使用流。是否与编码问题有关?)