0

これが私の状況です。レポートに入力するように設計された Web サービスを構築しました。可変数の「調査結果」を受け取り、すべての調査結果を含むレポートを生成します。

JSON を使用して複数の調査結果を一度に投稿し、それを List オブジェクトにバインドする方法はありますか?

編集:

したがって、より具体的には、調査結果は次のようになります。

{ タイトル: "タイトル", 説明: "説明", 評価: "高"}

関数を次のようにしたいと思います。

[HttpPost]
public string Post(IList<Finding> findings){
    //code...
}

public class Finding{
  public string title {get; set;}
  //...
}

したがって、基本的には、これらの JSON の結果の配列を IList にバインドしたいと考えています。

更新: 自動的にバインドできるようにしたいと考えています。現在、JSON 文字列を投稿することで回避できます (JSON.stringify を使用)。

動作する私のコードは次のとおりです。

[HttpPost]
public string Post([FromBody]object jsonString){
IList<Finding> findingList = JsonConvert.DeserializeObject<IList<Finding>>(jsonString.toString());
//...
}

変換するのではなく、これを自動的にバインドする方法についてのアイデアはありますか?

4

3 に答える 3

2

はい、しかしあなたの質問は一般的すぎて詳細に答えることができません。クラスを使用しHttpRequestて、投稿を行っていることを指定し、ペイロードを JSON blob にすることができます。そのブロブは、オブジェクトのリストにすることができます。サーバー側では、そのデータを読み取ってシリアル化できます。これを行うには、JSON.NET を使用することをお勧めします。非常に静的な方法でそれを行うことができます。たとえば、リストがから継承するタイプAまたはタイプのオブジェクトのリストであるとします。これらのオブジェクト定義をコードで作成すると、JSON.NET は生の json (これらのオブジェクトの配列) を取得して、コードで定義したオブジェクトの配列に変換できます。B, C, or DA

json.NET ドキュメント: http://james.newtonking.com/projects/json-net.aspx HttpRequest ドキュメント: http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx 抽象化HttpRequest のレイヤー: http://restsharp.org/

于 2013-02-01T20:12:54.297 に答える
0

ソリューションにとどまる場合:

[HttpPost]
public string Post([FromBody]object jsonString){
IList<Finding> findingList = JsonConvert.DeserializeObject<IList<Finding>>     (jsonString.toString());
//...
}

私はあなたができると思います:

[HttpPost]
public string Post(string jsonString){
IList<Finding> findingList = JsonConvert.DeserializeObject<IList<Finding>>     (jsonString);
//...
}

...そしてあなたのajax呼び出しで:

    $.ajax({
    ...
    data: JSON.Stringify(data),
    ...
    });

また、

次のようなものを試すことができます(それは私のコードから来ています):

    var LoginFormSubmitHandler = function (e) {
    var $form = $(this);
    // We check if jQuery.validator exists on the form
    if (!$form.valid || $form.valid()) {

        $.post($form.attr('action'), $form.serializeArray())
        ...

...そして $form.serializeArray() の値を表示できますか??

于 2013-02-02T15:43:34.803 に答える