0

JSONオブジェクトをコントローラーアクションにPOSTしています:

            $.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をstringifyします。

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ライブラリは、私が正しく思い出せば、.NET4以降で利用できます。

于 2013-03-21T07:13:31.187 に答える