Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.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# 无法从JSON字符串构造对象_C#_Json - Fatal编程技术网

C# 无法从JSON字符串构造对象

C# 无法从JSON字符串构造对象,c#,json,C#,Json,我正在将一个简单的JSON字符串从我的C#客户端传递到我的Web服务。下面是我发送的字符串 “{\'name\':\'S1\'}” 在服务端,我使用以下代码 class DataDC { public String attr { get; set; } public String attrVal { get; set; } } JavaScriptSerializer json_serializer = new JavaScriptSerializer(); DataDC

我正在将一个简单的JSON字符串从我的C#客户端传递到我的Web服务。下面是我发送的字符串

“{\'name\':\'S1\'}”

在服务端,我使用以下代码

class DataDC
{

    public String attr { get; set; }
    public String attrVal { get; set; }

}

JavaScriptSerializer json_serializer = new JavaScriptSerializer();
DataDC dc = (DataDC)json_serializer.DeserializeObject(str);
我得到以下错误

“无法强制转换类型为的对象 'System.Collections.Generic.Dictionary'2[System.String,System.Object]' 键入“DataDC”


你不能反序列化它的原因是因为它看起来一点都不像你的类。您应该创建一个如下所示的类:

public class DataDC
{
    public string name{get; set;}
}

您的Json字符串/对象与
DataDC

为了使其工作,您至少需要在类中有一个名为name的属性。e、 g

public class DataDC
{

    public string name { get; set; }
    public string attr { get; set; }
    public string attrVal { get; set; }

}
这样,您可能会得到一个匹配的属性

使用现有类时,需要以下Json字符串:

"{ \"attr\":\"S1\", \"attrVal\":\"V1\" }"
注意:您还可以使用以下代码进行反序列化

DataDC dc = json_serializer.Deserialize<DataDC>(str);
DataDC=json\u序列化程序。反序列化(str);

反序列化到您的类不应该是这样的吗:

JavaScriptSerializer json_serializer = new JavaScriptSerializer();
DataDC dc = json_serializer.Deserialize<DataDC>(str);

你应该像在json中那样命名你的类属性你的json反序列化程序应该如何知道DataDC对象以及如何映射它?@sameer你能提到这两个建议中的哪一个对你有帮助(或者两者都有帮助)?
class DataDC {
    public String name{ get; set; }    
}