c# - 使用单独的列表和对象序列化 Json 文件
问题描述
我有一个带有 2 个字符串对象数组和一个字符串的 JSON 文件。我需要序列化它,所以我将有能力拥有 2 个不同的对象,每个对象都包含 JSON 文件中的 1 个对象,或者如果字符串是单个字符串,则列出第一个或最后一个成员。
我已经尝试过这里的解决方案,但它给了我错误。
using (StreamReader r = new StreamReader("Licensce.json")) {
string json = r.ReadToEnd();
List<string> items = JsonConvert.DeserializeObject<List<string>>(json);
}
Json 文件是这样的:
{
"UsbDevices": [
"SA",
"SB",
"SC",
"SE2",
"SF",
"M",
]
"DeviceConnectivityExperationDateTime" : "2020-12-30"
}
错误是:
无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.Collections.Generic.List`1[System.String]”,因为该类型需要 JSON 数组(例如 [1,2, 3])正确反序列化。要修复此错误,要么将 JSON 更改为 JSON 数组(例如 [1,2,3]),要么将反序列化类型更改为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型可以从 JSON 对象反序列化的数组或列表。JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。
解决方案
检查您的 json 格式或与以下格式进行比较
var json = @"{
'UsbDevices': [
'SA',
'SB',
'SC',
'SE2',
'SF',
'M'],
'DeviceConnectivityExperationDateTime' : '2020-12-30'
}";
var items = JsonConvert.DeserializeObject<Data>(json);
}
public class Data
{
public Data()
{
this.UsbDevices = new List<string>();
}
public List<string> UsbDevices { get; set; }
public string DeviceConnectivityExperationDateTime { get; set; }
}
推荐阅读
- python - 为什么使用 __add__ 或 __radd__ 将浮点数添加到整数会返回 NotImplemented
- node.js - 在 firebase 函数 package.json 中包含 @firebase/app
- rust - 如何正确地对来自 winreg crate 的 regvaule 类型做出反应?
- fortran - Openmp 嵌套并行使用可用线程
- azure - 如何在 Azure 搜索中使用复杂的 targetField 创建字段映射
- java - 如何为广告暴民和加载以及在活动中显示创建单独的类?
- python - 如何修复 Firestore 查询突然不起作用
- android - android 应用程序的 Xamarin nuget 包更新失败
- node.js - 如何在 React App 中使用 Active Directory 实现 SSO 身份验证?
- ios - 无法推断复杂的闭包返回类型 SwiftUI ForEach