web-dev-qa-db-ja.com

JSON配列をJavascriptからWebAPIControllerメソッドに渡す

Web APIコントローラーメソッド(SaveDetails)でJSON配列パラメーターを取得できませんでした。
これが私のコードです。

JavaScriptコード:

  $ .ajax(
 {
 url: "api/Test/SaveDetails"、
 type: "POST"、
 data:{
 "従業員 ":
 
 {" firstName ":" John "、" lastName ":" Doe "}、
 {" firstName ":" Anna "、" lastName ": "Smith"}、
 {"firstName": "Peter"、 "lastName": "Jones"} 
 
}、
成功:関数(データ){alert( "success");}、
エラー:function(){alert( "Error");} 
})
 

コントローラーメソッド

[HttpPost]
public DataSet SaveDetails(Models.Person[] obj)
{
    //save opertion.    
}

モデルメソッド:

 public class Person
{
    public string firstName { get; set; }
    public string lastName { get; set; }
}

WebAPIメソッドでJSON配列パラメーターを取得するために行われる変更は何ですか。

11
Saravana Kumar

次のコードを試してください:

モデルメソッドを次のように宣言します。

public class Models.employees
{
    public string firstName { get; set; }
    public string lastName { get; set; }
}

public class Models.RootObject
{
    public List<employees> employees { get; set; }
}

コントローラー:

[HttpPost]
public DataSet SaveDetails([FromBody]RootObject Person)
{
    //save opertion.    
}

予想される結果: Output

11
Veera

私は自分の問題に対する答えを探しているときにこのスレッドに出くわし、オブジェクトのリスト/配列をWebAPIコントローラーに渡そうとしました。

このリンクの詳細: https://kwilson.io/blog/post-an-array-of-objects-to-webapi-using-jquery/

データを生の配列ではなく単一の匿名オブジェクトに変更すると、機能します。

したがって、あなたの場合、あなたはあなたのデータのために以下をするかもしれません

data : {
                "":
                [
                    { "firstName": "John", "lastName": "Doe" },
                    { "firstName": "Anna", "lastName": "Smith" },
                    { "firstName": "Peter", "lastName": "Jones" }
                ]
            },

そして、WebAPIコントローラーで

[HttpPost]
public DataSet SaveDetails(List<Models.Person> obj)
{
    //save operation.    
}

このようにして、Veeraの回答のようにリストオブジェクトを保持するために別のクラスを作成する必要はありません。

2
ascriven

このようにしてみてください:

$.ajax(
    {
        url  : "api/Test/SaveDetails",
        type : "POST",
        contentType : 'application/json',
        data : {
                    "obj":
                    [
                        { "firstName": "John", "lastName": "Doe" },
                        { "firstName": "Anna", "lastName": "Smith" },
                        { "firstName": "Peter", "lastName": "Jones" }
                    ]
                },
        success: function (data) {alert("success");},
        error: function () {alert("Error");}
    })

コントローラ:

[HttpPost]
public DataSet SaveDetails([FromBody]Models.Person[] obj)
{
    //save opertion.    
}
1
Melih Mucuk