2017-09-05 168 views
0

这是我第一次使用.NET以外的库let - 单独的JSON.Net所以请原谅我的初学者问题。 我想使用JSON.Net库将一些AWS数据反序列化成一个对象,但不断收到这个错误,特别是在json文件中的IP地址。对象没有存储JSON数据:无法反序列化当前JSON对象(例如{“name”:“value”})到类型'System.Collections.Generic.List

例AWS数据

{ 
    "ip_prefix": "205.251.254.0/24", 
    "region": "GLOBAL", 
    "service": "CLOUDFRONT" 
}, 
{ 
    "ip_prefix": "216.137.32.0/19", 
    "region": "GLOBAL", 
    "service": "CLOUDFRONT" 
} 

这里是我的C#的示例:

class AWS 
{ 
    public string ipprefix; 
    public string region; 
    public string service; 
} 


    class DataGathering 
{ 
    public List<AWS> GetIPData(string filename) 
    { 
     List<AWS> ipdata = new List<AWS>(); 
     using (StreamReader reader = new StreamReader(filename)) 
     { 
      string json = reader.ReadToEnd(); 
      ipdata = JsonConvert.DeserializeObject<List<AWS>>(json); 
     } 

     return ipdata; 
    } 

任何帮助非常感谢

+0

我遇到的问题是存储区域和服务值,但IP地址不存在。 – kristian

回答

1

由于在数据中的属性名称有下划线它是很可能它并没有将它转化为课堂。本主题显示了如何定义json属性名称是什么Json.Net: JsonSerializer-Attribute for custom naming

+0

我遇到的问题是区域和服务值正在存储,但IP地址不存在。 – kristian

+1

是的 - 由于json对象中的ip_prefix属性具有下划线,并且您的AWS对象上的属性没有,因此无法将该数据与该属性进行匹配。使用与PropertyName的JsonProperty属性告诉序列化程序“ip_prefix”预计映射到你的类中的“ipprefix”属性 –

+0

谢谢你,我明白你的意思了。但是,它似乎并没有附加到Json对象。这是我改变它:[JsonProperty(PropertyName =“IPPrefix”)] 公共字符串IPPrefix {获取;组; } – kristian

相关问题