2017-09-28 17 views
0

私は、文字列(キー/値)、ここ(名前/頭字語)のペアを配列し、これらの5つのペアをループしようとしています。ASP.NET MVCにマルチレベルネストされたjsonデータを投稿

私のjqueryのアヤックスはこの1つである:

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; 
      (...) 
     } 
    } 

オブジェクトは、私は、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;} 
} 

ですされ、コード内で完全に動作します。 しかし、私は要素の配列[Shop1/ACRO1, Shop2/ACRO2...]の作成方法とこの配列をループする方法を知らないのですか?私はpostMessage.Donnees.Shops[0].Name.ToStringを試しましたが、成功しませんでした。私は私のコードでオブジェクトShopsを見逃していると思いますが、他のオブジェクトに挿入する方法はありますか?

私はある時点で、ディクショナリオブジェクトを作成する必要がありますが、どこでどのように行うのですか?

私の主な問題は、jsonのオブジェクトのネストされた配列です。さあ、誰かが私をトラックに乗せることができますか?本当に感謝しています!

+1

'message'モデルには、' Shops'という名前のプロパティを含むモデルである 'Donnees'というプロパティ名が必要です。また、 'data:JSON.stringify(vJson)'と 'contentType: 'application/json''を追加する必要があります。 –

+0

' message'クラスに 'Donnees'はありません。あなたはクライアントから送信しているjsonの同じ構造を反映するc#クラスを持つ必要があります。 –

+0

http://json2csharp.com/のようなオンラインツールがあり、洞察を見るのに役立ちます –

答えて

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 
     } 

よう注意する必要があります: - あなたの命名規則はOKではありませんクラス名はメッセージがメッセージでなければならない場合はPasscalの場合、JavaScriptの場合はGuのようなラクダのケースを使用する必要がありますidはguidです。

関連する問題