繁体   English   中英

json数组未正确反序列化

[英]json array not deserialized correctly

将json数据发布到mvc操作时,ASP.NET MVC 4有问题。

我使用了Dictionary<string, string[]>来表示一个包含多个命名数组的javascript对象。 但是,不是将数组值存储在一个键中,而是每个数组值都有自己的键

var data = { 
    foo1: { bar1: ['a', 'b', 'c' ], bar2: ['z'] },
    foo2: { bar3: ['d', 'e' ] } 
};
$.ajax({
    url: '/mvc/SomeAction',
    type: 'POST',
    data: data,
    dataType: 'json',
    contentType: 'application/json',
    success: myCallback
});

我的MVC模型如下所示:

public class Data 
{
    public Dictionary<string, string[]> foo1 { get; set; }
    public Dictionary<string, string[]> foo2 { get; set; }
}

[HttpPost]
public JsonResult SomeAction(Data data) 
{
    // Instead of having a key named bar1 with the value as an array of strings, 
    // this is what I get:
    // data.foo1 = 
    // { 
    //     (key: "bar1[0]", value: null), 
    //     (key: "bar1[1]", value: null), 
    //     (key: "bar1[2]", value: null),
    //     (key: "bar2[0]", value: null)
    // }
    // etc..
}

看来MVC模型资料夹未正确将json反序列化为数据模型。

仅当字典的值是一个数组,如果它是另一个对象,它会按预期工作时,才会发生这种情况。

非常感谢有关解决此问题的任何想法。

在最坏的情况下,我将不得不使用JSON.stringify并在服务器上解析字符串,但这感觉不对。

您可以将此插件用于jQuery来转换json数据:

var data = $.toDictionary({ 
    foo1: { bar1: ['a', 'b', 'c' ], bar2: ['z'] },
    foo2: { bar3: ['d', 'e' ] } 
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM