c# - 将多级嵌套json数据发布到ASP.NET MVC

时间:2017-09-28 03:38:56

标签: c# json asp.net-mvc

我试图拥有一对字符串(键/值),这里(名称/首字母缩略词),并试图循环这5对。

我的jquery ajax就是这个:

    var vJson = {
                "Guid": "ccda117f-a9b5-4f54-ab4a-07a9cf403ef7",
                "Donnees":
                    {
                        "Shops":
                            [
                                { "Name": "Shop1", "Acronym": "ACRO1" },
                                { "Name": "Shop2", "Acronym": "ACRO2" },
                                { "Name": "Shop3", "Acronym": "ACRO3" },
                                { "Name": "Shop4", "Acronym": "ACRO4" }
                            ]
                        }
};

            $.ajax({
            url:"https://www.mywebsite.net/api/Create",
            data: vJson,
            type:"POST",
            dataType: 'json',
            success: function(data) {
                    console.log(data);
                }
            }
        );

我的c#控制器是

  public class ShopController : Controller
  {     
      [HttpPost]
      public string Create(message postMessage)
      {
          string guid = postMessage.Guid;
          (...)
      }
  }

对象是

public class message
{
    public string Guid { get; set; }
    public shop Shops { get; set; }
}

public class shop
{
    public string Name { get; set;}
    public string Acronym { get; set;}
}

在控制器中,当我要求guid时,它完美地工作(在代码中)。 但是,我不知道如何创建元素数组[Shop1/ACRO1, Shop2/ACRO2...]以及如何循环遍历此数组?我试过postMessage.Donnees.Shops[0].Name.ToString但没有成功。我想我错过了一个对象Shops in my code但是如何将它插入到另一个对象中?

我想在某一点上,我必须创建一个Dictionary对象,但我在哪里以及如何做到这一点?

所以我的主要问题是json中嵌套的对象数组。请问,有人可以把我放在轨道上吗?真的很感激!

1 个答案:

答案 0 :(得分:0)

你的json应该像

 var vJson = {
                "Guid": "ccda117f-a9b5-4f54-ab4a-07a9cf403ef7",
                "Shops": [
                                { "Name": "Shop1", "Acronym": "ACRO1" },
                                { "Name": "Shop2", "Acronym": "ACRO2" },
                                { "Name": "Shop3", "Acronym": "ACRO3" },
                                { "Name": "Shop4", "Acronym": "ACRO4" }
                            ] 
              };

并且您的邮件类应该是

    public class message
    {
       public string Guid { get; set; }
       public Ilist<shop> Shops { get; set; }
    }

然后你可以像

一样循环
     foreach(var shop in postmessage.Shops)
       {
       //some code
       }

注意: - 你的命名约定不正确类名应该在Passcal的情况下,如消息应该是消息,在javascript中你应该使用像Guid一样的骆驼案例guid。