我在标题中提到的是,json是不完全序列化的,因为某些对象在控制器中具有正确的值(我将JSON发送到ASP.NET MVC 4 Controller),但是问题是在存储在数组中的对象的属性(确切地说,数据出现的问题)
出现问题)我有以下类:
public class Node
{
[JsonProperty("id")]
public int? Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("type")]
public string Type { get; set; }
private Data _data = new Data();
[JsonProperty("data")]
public Data Data { get; set; }
private List<Adjacency> _adjacencies = new List<Adjacency>();
[JsonProperty("adjacencies")]
public List<Adjacency> Adjacencies
{
get { return _adjacencies; }
set { _adjacencies = value; }
}
private List<Instance> _dependendStates = new List<Instance>();
public List<Instance> DependentStates
{
get { return _dependendStates; }
set { _dependendStates = value; }
}
}
public class Data
{
[JsonProperty("$posX")]
public decimal PosX { get; set; }
[JsonProperty("$posY")]
public decimal PosY { get; set; }
}
public class Adjacency
{
[JsonProperty(PropertyName = "nodeTo")]
public string NodeTo { get; set; }
[JsonProperty(PropertyName = "data")]
public AdjData Data { get; set; }
//doesn't contain definition for automated transitions
}
public class AdjData
{
[JsonProperty(PropertyName = "$labelid")]
public string LabelId { get; set; }
[JsonProperty(PropertyName = "$labeltext")]
public string Label { get; set; }
[JsonProperty(PropertyName = "$type")]
public string Type { get; set; }
}
我突出显示了没有正确值的字段。
无效问题http://img19.imageshack.us/img19/530/36976913.png
JSON看起来像这样:
{
"result":[
{
"id":"100",
"name":"Start",
"data":{
"$posX":-100,
"$posY":-100,
"$deployed":true,
"$color":"#000000",
"$selected":"true"
},
"adjacencies":[
{
"nodeTo":"188",
"data":{
"$type":"labeled_arrow",
"$labelid":"Label Name",
"$labeltext":"Label Name"
}
}
]
},
{
"id":"188",
"name":"Second ",
"data":{
"$dim":20,
"$color":"#000000",
"$selected":"true"
},
"adjacencies":[
]
}
],
"smName":"gftrds"
}
我遇到问题,因为我不了解或看到问题在哪里,因此解决这个问题。
免责声明:我无法确切地重现它,就像我的情况下Label
和LabelId
值得注意,尽管Type
没有,所以我的Anwser可能无法解决您遇到的问题。
在我的情况下,如果它不是第一个,我只能在"$type":"labeled_arrow"
属性中进行估算 - 如果它在"$labelid":"Label Name"
或"$labeltext":"Label Name"
之后出现,则效果很好。
奇怪的是,如果$type
属性在JSON中称为type
并在C#中称为[JsonProperty(PropertyName = "type")]
,则无论订单如何
在您的情况下,您也无法对Label
或LabelId
进行审理,因此您的问题可能是由其他事物引起的。为了排除我建议的内容,可能要尝试修改某些属性名称(可能只是摘下$),以查看它们是否导致属性被错误化。
我遇到了同样的问题,但是在我的情况下,这与数据如何从客户端传输有关。确保AJAX请求使用适当的标题和格式化。例如:
dataType: 'json',
contentType: 'application/json; charset=UTF-8',
data: JSON.stringify({
MemberId : '123',
UserName: '456',
Parameters: [
{ Value : 'testing' },
{ Value : 'test2' }
]
}),