首页 > 解决方案 > .NET 用于列表或单个项目的自定义 Json 转换器

问题描述

我的目标是用来System.text.Json解析来自其余 api 的响应。响应返回一个或多个项目 - 但如果只返回一个项目,则[]它周围没有括号(这使得解析变得困难)。

反序列化:

// i need a list here to process data
var response = JsonSeralizer.Deseralize<IList<ExampleResponse>>(content);

示例响应 1:

[
 {
  "Status": "Healthy"
 },
 {
  "Status": "Healthy"
 }
]

示例响应 2:

{
 "Status": "Healthy"
}

如何使用JsonConverter<T>可以解析单个项目或整个列表的自定义转换器?

标签: c#json.net-coreserializationsystem.text.json

解决方案


如果您无法更改 REST API 的输出以强制其始终返回一个数组,您可以在解析字符串之前检查该字符串,并添加括号。然后解析它。

我做了这个例子:https ://dotnetfiddle.net/dhZIKq


推荐阅读