使用单独的列表和对象序列化Json文件

时间:2019-05-23 06:42:13

标签: c# json serialization

我有一个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对象反序列化。

1 个答案:

答案 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; }
 }