我有一个JSON文件,其中包含2个字符串对象数组和一个字符串。并且我需要对其进行序列化,因此我将能够拥有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对象反序列化。
答案 0 :(得分:0)
检查您的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; }
}