我将一个简单的JSON字符串从我的C#客户端传递给我的webservice。以下是我发送的字符串
“{\”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'。“
答案 0 :(得分:23)
不应该像这样反序列化到你的班级:
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
DataDC dc = json_serializer.Deserialize<DataDC>(str);
另一件事是您的模型类中没有Name参数,因此不会传递任何内容。 你的JSON应该是这样的: “{\”attr \“:\”某些值\“,\”attrVal \“:\”某些值\“}”
或者更改您的模型类:
class DataDC {
public String name{ get; set; }
}
答案 1 :(得分:1)
您的Json字符串/对象与DataDC
为了使其正常工作,您至少需要在类中拥有一个名为name的属性。 e.g。
public class DataDC
{
public string name { get; set; }
public string attr { get; set; }
public string attrVal { get; set; }
}
这样你可能会得到一个匹配的属性。
使用现有的Class,您需要以下Json字符串;
"{ \"attr\":\"S1\", \"attrVal\":\"V1\" }"
注意:您还可以使用以下代码进行反序列化;
DataDC dc = json_serializer.Deserialize<DataDC>(str);
答案 2 :(得分:0)
你无法反序列化它的原因是因为它看起来并不像你的类。你应该创建一个这样的类:
public class DataDC
{
public string name{get; set;}
}