gpt4 book ai didi

c# - 使用 ServiceStack 反序列化数组

转载 作者:行者123 更新时间:2023-11-28 19:45:20 25 4
gpt4 key购买 nike

以下是我尝试发布到我的 ServiceStack Web 服务的内容:

$.ajax({
url: 'http://localhost:8092/profiles',
type:'POST',
data: {
FirstName : "John",
LastName : "Doe",
Categories : [ "Category 1", "Category 2", "Category 3" ]
},
success: function (response) { $('#response').append('Success!'); },
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status + ' Error: ' + thrownError);
},
dataType: "json"
});

这是目标类:

[Route("/profiles", "POST")]
public class ProfileRequest
{
public string FirstName{ get; set; }
public string LastName{ get; set; }
public string[] Categories{ get; set; }
}

除数组外,所有字段均已填充。 ServiceStack 是否无法处理如此复杂的对象,或者我是否遗漏了某些内容?

注意:我见过Unable to deserialize array这建议使用 JSON.stringify() 但该解决方案似乎仍然不起作用,事实上它会导致没有数据被反序列化,从而使情况变得更糟。

最佳答案

ServiceStack 可以处理这个问题,但是您的 jQuery $.ajax 数据必须使用 JSON.stringify() 方法进行 JSON 字符串化,并设置 contentTypeapplication/json 否则 jQuery 将尝试将数据发布为 application/x-www-form-urlencoded 并且反序列化将会失败。

所以你的请求应该是:

$.ajax({
url: 'http://localhost:8092/profiles',
type:'POST',
data: JSON.stringify({
FirstName: "John",
LastName: "Doe",
Categories: [ "Category 1", "Category 2", "Category 3" ]
}),
success: function (response) { $('#response').append('Success!'); },
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status + ' Error: ' + thrownError);
},
contentType: "application/json",
dataType: "json"
});

希望有帮助。

关于c# - 使用 ServiceStack 反序列化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24370514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com