尝试解析JSON响应时出错
try
{
var result = (new JavaScriptSerializer()).Deserialize<Rootobject>(jsonResponse);
}
catch(Exception ex){}
JSON字符串
"[{\"ID\":1,\"Code\":null,\"Name\":\"Black\"},{\"ID\":1,\"Code\":null,\"Name\":\"Red\"},{\"ID\":1,\"Code\":\"blx\",\"Name\":\"Blue\"}]"
附上屏幕截图以获取错误详细信息和精确的JSON字符串
我正在使用以下代码生成JSON
public string JSONTest()
{
List<Color> colors = new List<Color>();
colors.Add(new Color() { ID = 1, Name = "Black" });
colors.Add(new Color() { ID = 1, Name = "Red" });
colors.Add(new Color() { ID = 1, Name = "Blue", Code = "blx" });
return JsonConvert.SerializeObject(colors);
}
答案 0 :(得分:1)
试试这个
var result = (new JavaScriptSerializer()).Deserialize<List<Class1>>(jsonResponse);
您的结果将是Class1的列表
答案 1 :(得分:0)
嘿尝试使用以下内容:
Class1 obj=new Class1();
obj=serializer.Deserialize<Class1>(jsonResponse);
答案 2 :(得分:0)
JSON string
反序列化需要 Root Key 才能完成反序列化过程
在您的情况下,此JSON不知道要反序列化的对象
您必须显示以在JSON字符串中反序列化类..
public class Rootobject
{
public Class1[] Property1 { get; set; }
}
public class Class1
{
public int ID { get; set; }
public string Code { get; set; }
public string Name { get; set; }
}
string jsonResponse = "{ \"Property1\" : [{\"ID\":1,\"Code\":null,\"Name\":\"Black\"},{\"ID\":1,\"Code\":null,\"Name\":\"Red\"},{\"ID\":1,\"Code\":\"blx\",\"Name\":\"Blue\"}] }";
var result = (new JavaScriptSerializer()).Deserialize<Rootobject>(jsonResponse);
使用根密钥生成JSON字符串
public string JSONTest()
{
List<Class1> colors = new List<Class1>();
colors.Add(new Class1() { ID = 1, Name = "Black" });
colors.Add(new Class1() { ID = 1, Name = "Red" });
colors.Add(new Class1() { ID = 1, Name = "Blue", Code = "blx" });
return JsonConvert.SerializeObject(new Rootobject { Property1 = colors.ToArray() });
}
Alternatifly,
DeserializeObject
方法可以直接在object
上反序列化。
如果您像这样使用它,您将不需要Root Key 但返回值将是一个对象..
string jsonResponse = "[{\"ID\":1,\"Code\":null,\"Name\":\"Black\"},{\"ID\":1,\"Code\":null,\"Name\":\"Red\"},{\"ID\":1,\"Code\":\"blx\",\"Name\":\"Blue\"}]";
object[] result = (object[])(new JavaScriptSerializer()).DeserializeObject(jsonResponse);