par*_*man 12 data-binding post json deserialization nancy
我有一个具有以下结构的json对象
{
ContainerType: "Box",
Items : [{Name: "Coin", Amount: 5}, {Name: "Spyglas", Amount : 1}]
}
Run Code Online (Sandbox Code Playgroud)
该对象在Nancy后端系统中有一个表示:
public string ContainerType {get; set}
public IEnumberable<Item> Items {get; set}
Run Code Online (Sandbox Code Playgroud)
其中Item(如预期)是一个非常简单的公共属性对象:
public string Name {get; set;}
public double Amount {get; set;}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我在我的模块中收到Post(基于NancyModule)时,只有字符串属性被绑定在这行代码中:
var model = this.databind<MyContainerModel>();
Run Code Online (Sandbox Code Playgroud)
我已尝试将列表类型更改为更具体(List <MyContainerModel>),更改为Arrays(MyContainerModel []),但似乎没有任何效果.
Nancy的git-repo演示部分中的数据绑定示例仅涉及整数的反序列化,但我的问题是使用javascript对象对数组进行反序列化.
有任何想法吗?
谢谢!
par*_*man 23
几个小时后,我找到了解决方案.问题不在南希的部分,而是我的ajax帖子没有正确的标题.添加contentType和dataType就可以了:
$.ajax({
url: '/add',
type: 'POST',
data: normalModel,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
})
Run Code Online (Sandbox Code Playgroud)
希望这有助于未来的读者!