C# 将JSON反序列化为自定义类-对象为空
我有一个AJAX调用,它将以下JSON发送到我的Web服务: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();
{"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似乎起到了作用。