Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符串反序列化到对象_C#_.net_Json - Fatal编程技术网

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>>();