响应 JObject 值未完全填写在返回的 JSON 中

2024-01-09

JObject 内容的响应输出在应用程序中格式不正确。

将问题缩小到尽可能小的范围,应该缺少一些导致此行为的细节(不太可能是其他原因)。

以下代码显示了来自 API 端点的响应的 JSON 负载:

    [HttpPost]
    public async Task<ObjectResult> Post()
    {
      var json = JsonConvert.DeserializeObject<JObject>(
        @"{""parameter-1"":""J234546ZrVl"",""value-2"":""3E9CY3gertertmdALWMmHkvP"",""test-3"":""verify please""}");
      var result = new ObjectResult(json);

      return result;
    }

收到的响应如下:

  {"parameter-1":[],"value-2":[],"test-3":[]}

并且应该是:

  {"parameter-1":"J234546ZrVl","value-2":"3E9CY3gertertmdALWMmHkvP","test-3":"verify please"}

调试变量时json是正确的,并且具有所有属性值,但不知何故它没有正确呈现。

有任何想法吗?

  • 这是使用:ASP网络核心5.0
  • ObjectResult 定义在:namespace Microsoft.AspNetCore.Mvc
  • 它的构造函数是:public ObjectResult(object value);
  • 并具有接口:

public class ObjectResult : ActionResult, IStatusCodeActionResult, IActionResult


谢谢dbc https://stackoverflow.com/users/3744182/dbc提示,我们可以使用遗留服务,只需将其返回值与之前的序列化即可Newtonsoft.Json库并用新的反序列化系统.Text.Json.

这种方法可以做到这一点,并且可以在整个应用程序中使用,对于非常大的 JSON 值可能不是最佳选择,但对于我们的要求来说是干净和精简的。

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Text.Json;

...

  public static JsonDocument JToken2JsonDocument(JToken input)
  {
    var jsonString = JsonConvert.SerializeObject(input);
    var json = JsonDocument.Parse(jsonString);
    return json;
  }

可以使用返回的对象调用 ObjectResult 构造函数并正确呈现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

响应 JObject 值未完全填写在返回的 JSON 中 的相关文章

随机推荐