2017-09-05 111 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

相關問題