嵌套的JSON避免序列化



我在标题中提到的是,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"
}

我遇到问题,因为我不了解或看到问题在哪里,因此解决这个问题。

免责声明:我无法确切地重现它,就像我的情况下LabelLabelId值得注意,尽管Type没有,所以我的Anwser可能无法解决您遇到的问题。

在我的情况下,如果它不是第一个,我只能在"$type":"labeled_arrow"属性中进行估算 - 如果它在"$labelid":"Label Name""$labeltext":"Label Name"之后出现,则效果很好。

奇怪的是,如果$type属性在JSON中称为type并在C#中称为[JsonProperty(PropertyName = "type")],则无论订单如何

在您的情况下,您也无法对LabelLabelId进行审理,因此您的问题可能是由其他事物引起的。为了排除我建议的内容,可能要尝试修改某些属性名称(可能只是摘下$),以查看它们是否导致属性被错误化。

我遇到了同样的问题,但是在我的情况下,这与数据如何从客户端传输有关。确保AJAX请求使用适当的标题和格式化。例如:

        dataType: 'json',
        contentType: 'application/json; charset=UTF-8',
        data: JSON.stringify({
            MemberId : '123',
            UserName: '456',
            Parameters: [
                { Value : 'testing' },
                { Value : 'test2' }
            ]
        }),

相关内容

  • 没有找到相关文章

最新更新