使用 System.Text.Json 从 json 文件读入 IEnumerable
Read from json file into IEnumerable using System.Text.Json
我在使用 System.Text.Json...
从 json 读取 C# 中的 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"
}
]
您的 json 将反序列化为:
var result = JsonSerializer.Deserialize<Dictionary<string,string>[]>(json);
但是,创建一个与结构匹配的类型不是更有用吗?
public class UserInfo
{
public string name { get; set; }
public string endpoint { get; set; }
public string country { get; set; }
}
var result = JsonSerializer.Deserialize<UserInfo[]>(json);
我在使用 System.Text.Json...
从 json 读取 C# 中的 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"
}
]
您的 json 将反序列化为:
var result = JsonSerializer.Deserialize<Dictionary<string,string>[]>(json);
但是,创建一个与结构匹配的类型不是更有用吗?
public class UserInfo
{
public string name { get; set; }
public string endpoint { get; set; }
public string country { get; set; }
}
var result = JsonSerializer.Deserialize<UserInfo[]>(json);