使用 System.Text.Json 从 json 文件读取到 IEnumerable
Posted
技术标签:
【中文标题】使用 System.Text.Json 从 json 文件读取到 IEnumerable【英文标题】:Read from json file into IEnumerable using System.Text.Json 【发布时间】:2022-01-03 18:18:55 【问题描述】:使用 System.Text.Json 在 C# 中从 json 读取到 IEnumerable 时遇到问题...
这是错误:
System.Text.Json.JsonException: The JSON value could not be converted to System.Collections.Generic.Dictionary`2[System.String,System.String[]]. Path: $ | LineNumber: 0 | BytePositionInLine: 1.
以下几行包含我的代码:
private static Dictionary<string, string[]>? GetStaticMedicalAdvisors()
// TODO - read from json
// TODO - convert to contact
// TODO - add contacts to list
// TODO - DO NOT USE NEWTONSOFT.JSON (use System.Text.Json)
// TODO - return list
var json = System.IO.File.ReadAllText("MedicalAdvisors.json");
var dict = JsonSerializer.Deserialize<Dictionary<string, String[]>>(json);
return dict;
这是我的MedicalAdvisors.json
:
[
"name": "Franz Immer",
"endpoint": "000",
"country": "CH"
,
"name": "Nathalie Krügel",
"endpoint": "000",
"country": "CH"
]
【问题讨论】:
查看一小部分 MedicalAdvisors.json 样本可能会有所帮助。 这就是字典的 json 表示形式"key1":["a","b","c"],"key2":["d","e","f"],"key3":["g","h","i"]
您的 json 将反序列化为:var result = JsonSerializer.Deserialize<Dictionary<string,string>[]>(json);
但是,创建一个与结构匹配的 Type 不是更有用吗?
public class UserInfo
public string name get; set;
public string endpoint get; set;
public string country get; set;
var result = JsonSerializer.Deserialize<UserInfo[]>(json);
【讨论】:
是的,我已经有一个完全一样的课程了。 但是现在我会大摇大摆地得到一个空字符串.... 您的问题缺乏上下文,无法知道 Swagger 与它有什么关系。 啊,我修好了,非常感谢用户信息的提示,我会接受你的问题,也许你可以对整个问题投赞成票,因为互联网上没有太多教程。以上是关于使用 System.Text.Json 从 json 文件读取到 IEnumerable的主要内容,如果未能解决你的问题,请参考以下文章
从 Newtonsoft.Json 迁移到 System.Text.Json
JsonConverter 等效于使用 System.Text.Json
将 Newtonsoft.Json 代码迁移到 System.Text.Json