gpt4 book ai didi

asp.net-core-webapi - 有没有办法在每个 HTTP 请求的 JSON 响应中重置 $id? JsonSerializerSettings = PreserveReferencesHandling.Objects

转载 作者:行者123 更新时间:2023-12-03 16:37:20 24 4
gpt4 key购买 nike

XYZController.cs

[HttpPost]
public async Task<ActionResult> Post([FromBody] T inputContext)
{
var outputContext = Process(inputContext);
return StatusCode(200, outputContext );
}

启动文件
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddJsonOptions(options =>
{
UpdateJsonSettings.ConfigureJsonFormatter(options.SerializerSettings);
});
}

更新JsonSettings.cs
internal static void ConfigureJsonFormatter(JsonSerializerSettings settings)
{
settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
settings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
settings.Converters.Add(new StringEnumConverter());
}

XYZ Controller 的 HttpResponse 尝试 1:

{
"$id": "1",
“账单”: {
"$id": "2",
"type": "TYPE1",

XYZ Controller 的 HttpResponse 尝试 2: -- 不以 $id 1 开头

{
"$id": "28", <--- 不知道为什么第二个请求 $ID 以 28 开头 :( -->
“账单”: {
"$id": "29" ,
"type": "TYPE1",

XYZ Controller 的 HttpResponse 尝试 3: -- 不以 $id 1 开头

{
"$id": "55", <--- 不确定为什么第二个请求 $ID 以 55 开头 :( -->
“账单”: {
"$id": "56" ,
"type": "TYPE1",

我正在使用 Newtonsoft.Json (11.0.2)

最佳答案

我经过惨痛的教训才学到这个!

问题出在 StatusCode 方法中,它正在返回 ObjectResult。将方法签名更改为 IActionResult 并返回 JsonResult 后,它工作正常。此外,API 性能也得到了改进。

[HttpPost]
public async Task<IActionResult> Post([FromBody] T inputContext)
{
var outputContext = Process(inputContext);
var jsonResult = new JsonResult(outputContext);
jsonResult.StatusCode = 200;
return jsonResult;
}

关于asp.net-core-webapi - 有没有办法在每个 HTTP 请求的 JSON 响应中重置 $id? JsonSerializerSettings = PreserveReferencesHandling.Objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59832635/

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