无法从JSON字符串构造对象

本文关键字:对象 字符串 JSON | 更新日期: 2023-09-27 18:26:55

我正在将一个简单的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"。"

无法从JSON字符串构造对象

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

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

另一件事是,您的模型类中没有Name参数,因此不会向它传递任何内容。您的JSON应该是这样的:

或者更改您的型号类别:

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

Json字符串/对象与DataDC 的任何属性都不匹配

为了实现这一点,您至少需要在类中有一个名为name的属性。例如

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

不能反序列化它的原因是因为它看起来根本不像你的类。你应该创建一个这样的类:

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