C# 从字符串反序列化到对象
我已经在这个问题上纠缠了很长时间,所以我在这里问 我收到以下错误消息:C# 从字符串反序列化到对象,c#,.net,json,C#,.net,Json,我已经在这个问题上纠缠了很长时间,所以我在这里问 我收到以下错误消息: "Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'XXX' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly." 我的班
"Newtonsoft.Json.JsonSerializationException: 'Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'XXX' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly."
我的班级是这样的:
public class SSN
{
public IDictionary<string,string> ssns { get; set; }
}
公共类SSN
{
公共IDictionary SSN{get;set;}
}
以下是json格式:
您的JSON包含键和ssn而不是键和值,因此字典无法工作。 您需要创建如下类:
class SSN
{
public string ssn {get;set;}
public string key {get;set;}
}
并将json反序列化到SSN对象集合。首先,您需要创建类对象以正确地反序列化json,如
class SampleClass
{
public string ssn { get; set; }
public string key { get; set; }
}
然后,您需要将json反序列化为列表
,因为json是一种数组类型,这意味着它从打开方括号开始[
,以关闭方括号结束]
,而不是花括号
List<SampleClass> sampleClasses = JsonConvert.DeserializeObject<List<SampleClass>>(json_string);
List sampleClasses=JsonConvert.DeserializeObject(json_字符串);
或
List sampleClasses=JToken.Parse(json_string).ToObject();
您如何称呼Newtonsoft?添加这些linestry来创建和序列化对象,首先查看json文件的外观,然后您就会明白了!)
List<SampleClass> sampleClasses = JToken.Parse(json_string).ToObject<List<SampleClass>>();