Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.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_Web Services - Fatal编程技术网

C# 将JSON反序列化为自定义类-对象为空

C# 将JSON反序列化为自定义类-对象为空,c#,json,web-services,C#,Json,Web Services,我有一个AJAX调用,它将以下JSON发送到我的Web服务: {"Tags":["12","5","2"],"TargetId":"36946","TargetType":"Officer"} 以下是webservice和自定义类: [WebMethod] public string UpdateTags(string PostParameters) { JavaScriptSerializer serializer = new JavaScriptSerializer();

我有一个AJAX调用,它将以下JSON发送到我的Web服务:

{"Tags":["12","5","2"],"TargetId":"36946","TargetType":"Officer"}
以下是webservice和自定义类:

[WebMethod]
public string UpdateTags(string PostParameters)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    var tagData = serializer.Deserialize<TagData>(PostParameters);

    // do some stuff with tagData
}

[Serializable]
[DataContract(Name = "PostParameters")]
public class TagData
{
    [DataMember(Name = "TargetId")]
    string TargetId { get; set; }
    [DataMember(Name = "TargetType")]
    string TargetType { get; set; }
    [DataMember(Name = "Tags")]
    List<int> Tags { get; set; }
}
[WebMethod]
公共字符串更新标记(字符串后参数)
{
JavaScriptSerializer serializer=新的JavaScriptSerializer();
var tagData=serializer.Deserialize(后参数);
//用tagData做一些事情
}
[可序列化]
[DataContract(Name=“PostParameters”)]
公共类标记数据
{
[DataMember(Name=“TargetId”)]
字符串TargetId{get;set;}
[DataMember(Name=“TargetType”)]
字符串TargetType{get;set;}
[DataMember(Name=“Tags”)]
列表标记{get;set;}
}

不幸的是,tagData的属性为null。我做的有什么不对?

TagData中的属性不是公共的。把它们公之于众,它应该会起作用


我还建议使用。速度更快。

这就是您的JSON是如何准确到达的,还是您添加了任何额外的内容?调试时,将JSON悬停在PostParameters变量上时,JSON看起来与此完全相同。它是无效的JSON,请运行它,您会看到它已中断。还可以尝试使用诸如和之类的服务,当在调试中悬停在后参数上时,应该使用放大镜符号。单击它并从那里复制JSON(并编辑您的问题)。这就是字符串的精确值。您发布的内容没有使用双引号。我已经按照@Omilis指令更新了帖子。我一直认为public是默认的访问修饰符,这在其他类中也起到了作用,但将这些属性标记为public似乎起到了作用。