我有一个数组,正在使用JSON.stringify转换为JSON
const arrayOfUpdatesAsJSON = JSON.stringify(this.ArrayOfTextUpdates);
这将输出一些有效的JSON。
[{"key":"AgentName","value":"Joe Blogs"},{"key":"AgentEmail","value":"Joe@test.com"}]
当我要向服务器发送JSON时,我将内容类型设置为application / json
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
})
};
按下按钮后,我会使用网址,正文和标题发出请求。
try {
this.httpservice
.post(
url,
arrayOfUpdatesAsJSON,
httpOptions
)
.subscribe(result => {
console.log("Post success: ", result);
});
} catch (error) {
console.log(error);
}
这很好用,并且符合我在api中期望的方法。
[HttpPost("{id:length(24)}", Name = "UpdateLoan")]
public IActionResult Update(string id, string jsonString)
{
Console.WriteLine(jsonString);
... and some other stuff
}
该ID填充在url生成器中,该生成器填充ok。然后,我希望用我的请求的json填充api中变量jsonString的内容,但是它始终为null。我想念什么?
答案 0 :(得分:1)
首先,您需要用jsonString
标记[FromBody]
,以告知模型绑定程序绑定已发布json中的参数。而且,因为您期望纯string
的值,所以您需要传递有效的json string
(而不是object
),因此您需要在JavaScript中调用其他JSON.stringify
const jsonArray = JSON.stringify(this.ArrayOfTextUpdates);
const arrayOfUpdatesAsJSON = JSON.stringify(jsonArray);
this.httpservice
.post(
url,
arrayOfUpdatesAsJSON,
httpOptions
)
控制器
[HttpPost("{id:length(24)}", Name = "UpdateLoan")]
public IActionResult Update(string id, [FromBody] string jsonString)