将JSON转换为字符串(第二种方法)时,出现错误:
Newtonsoft.Json.JsonReaderException:'解析值时遇到意外字符:[。路径”,第1行,位置1。'
为什么我在第二种方法中遇到错误,但是代码在第一种方法中运行正常,为什么第二种方法有任何解决方案,因为我只能使用该方法?
代码:
static void Main(string[] args)
{
string abc = "[{\"provider\":\"test\",\"schemes\":[{\"tyo\":\"1\",\"check\":\"99\",\"slotNumber\":\"0\"},{\"tyo\":\"2\",\"check\":\"99\",\"slotNumber\":\"469\"}]}]";
var value = abc.FromJson().ToString();
// Getting error in below line
var value2 = abc.FromJson(typeof(String));
}
// First Method
public static object FromJson(this string json)
{
var value = JsonConvert.DeserializeObject(json);
return value;
}
// Second Method
public static object FromJson(this string json, Type type)
{
var value = JsonConvert.DeserializeObject(json, type);
return value;
}
答案 0 :(得分:4)
JsonConvert.DeserializeObject(string, Type)
尝试将JSON解析为给定类型,将对象的属性分配给结果类型的属性。由于String不提供必要的属性(在您的情况下,它可能需要是一个数组,其对象必须提供provider
和schemes
之类的属性),因此无法将其反序列化为字符串。
这是因为Newtonsoft.Json支持对对象数组进行反序列化:
var value2 = abc.FromJson(typeof(object[]));