返回未完全填写的响应 JObject 值 JSON
Response JObject values not completely filled in returned JSON
JObject 内容的响应输出在应用程序中的格式不正确。
将问题缩小到可能的最小规模,应该有一些缺失的细节导致了这种行为(其他原因不太可能)。
以下代码显示 JSON 负载是来自 API 端点的响应:
[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 Net Core 5.0
- ObjectResult 定义于:
namespace Microsoft.AspNetCore.Mvc
- 它的构造函数是:
public ObjectResult(object value);
- 并具有接口:
public class ObjectResult : ActionResult, IStatusCodeActionResult, IActionResult
感谢 dbc 提示,我们可以使用遗留服务,只需将其 return 值与之前的 Newtonsoft.Json 库序列化,然后使用新的 System.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;
}
可以使用 returned 对象调用 ObjectResult 构造函数并正确呈现。
JObject 内容的响应输出在应用程序中的格式不正确。
将问题缩小到可能的最小规模,应该有一些缺失的细节导致了这种行为(其他原因不太可能)。
以下代码显示 JSON 负载是来自 API 端点的响应:
[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 Net Core 5.0
- ObjectResult 定义于:
namespace Microsoft.AspNetCore.Mvc
- 它的构造函数是:
public ObjectResult(object value);
- 并具有接口:
public class ObjectResult : ActionResult, IStatusCodeActionResult, IActionResult
感谢 dbc 提示,我们可以使用遗留服务,只需将其 return 值与之前的 Newtonsoft.Json 库序列化,然后使用新的 System.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;
}
可以使用 returned 对象调用 ObjectResult 构造函数并正确呈现。