12

次の構造のjsonオブジェクトがあります

{
 ContainerType: "Box",
 Items : [{Name: "Coin", Amount: 5}, {Name: "Spyglas", Amount : 1}]   
}

このオブジェクトは、Nancy バックエンド システムで表現されます。

public string ContainerType {get; set}
public IEnumberable<Item> Items {get; set}

ここで、Item は (予想どおり) パブリック プロパティを持つ非常に単純なオブジェクトです。

public string Name {get; set;}
public double Amount {get; set;}

私の問題は、モジュール (NancyModule に基づく) で Post を受け取ると、次のコード行で文字列プロパティのみがバインドされていることです。

var model = this.databind<MyContainerModel>();

リストの型をより具体的な (List<MyContainerModel>)、配列 (MyContainerModel[]) に変更しようとしましたが、何も機能しないようです。

Nancy の git-repo のデモ セクションにあるデータ バインディングの例は、int の逆シリアル化のみを扱っていますが、私の質問は、javascript オブジェクトを使用した配列の逆シリアル化に関するものです。

何か案は?

ありがとう!

4

1 に答える 1

23

数時間後、私は解決策を見つけました。問題はナンシーの部分ではなく、私の ajax 投稿に正しいヘッダーがなかったことです。contentTypedataTypeを追加するとうまくいきました:

$.ajax({
    url: '/add',
    type: 'POST',
    data: normalModel,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',

})

これが将来の読者に役立つことを願っています!

于 2012-10-22T19:52:14.150 に答える