0

我将 JSON 对象发布到控制器操作:

            $.ajax({
                url: "/path/to/action",
                type: "POST",
                dataType: "json",
                data: {
                        name: "John Doe",
                        phone: "2323454543",
                        skills: {
                            code: "php",
                            design: "photoshop"
                            }
                        }
            });

如何将此数据映射到某种键值对对象?在 PHP 中,这些被映射到一个不可见的关联数组。我希望能够访问这样的属性:

SomeDynamicType data = ...//something here to prepare json data
string codeSkills = data.skills.code; //codeSkills should = "php"

我对模型绑定不感兴趣,因为这些值与模型不对应——它们是任意的。

4

2 回答 2

0

尝试使用JSON.NET,该库将 JSON 解析为类似字典的结构。它的用法如下:

JObject rss = JObject.Parse(json);
string codeSkills = (string)rss["skills"]["code"];
于 2013-03-21T06:17:53.573 回答
0

在您的 .ajax 调用中字符串化 Json:

data: {
                json:
                    JSON.stringify({
                        name: "John Doe",
                        phone: "2323454543",
                        skills: {
                            code: "php",
                            design: "photoshop"
                        }
                    })
            }

并在控制器中以您想要的方式访问属性:

        [HttpPost]
        public JsonResult Action(string json)
        {
            dynamic data = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(json);
            string codeSkills = data.skills.code;
...

codeSkills 是“php”字符串。

如果我没记错的话,Newtonsoft Json 库从 .NET 4 开始就可用了。

于 2013-03-21T07:13:31.187 回答