2013-06-28 79 views
0

獲取字符串列表我有了這個JSON(下),我無法選擇串的名單,這將是「馬里蘭州」,「紐約」,「賓夕法尼亞州」。使用LINQ to從Json的

{ 
    "displayFieldName": "NAME", 
    "fieldAliases": { 
    "STATE": "STATE" 
    }, 
    "fields": [ 
    { 
     "name": "STATE", 
     "type": "esriFieldTypeString", 
     "alias": "STATE", 
     "length": 20 
    } 
    ], 
    "features": [ 
    { 
     "attributes": { 
     "STATE": "Maryland" 
     } 
    }, 
    { 
     "attributes": { 
     "STATE": "New York" 
     } 
    }, 
    { 
     "attributes": { 
     "STATE": "Pennsylvania" 
     } 
    } 
    ] 
} 

到目前爲止,我得到了json字符串並將其反序列化爲一個JObject,我可以看到這些孩子。我遇到了麻煩,但它不適合我見過的其他示例,因爲「功能」是「屬性」的集合。我在編寫linq時遇到了麻煩,無法進入下一個階段。

這裏是我的代碼:

  var foo = response.Content.ReadAsStringAsync().Result; 

      var json = (JObject)JsonConvert.DeserializeObject(foo); 

      var cf = json["features"].Children(); 

任何人可以幫助我的LINQ語句,從這個國家得到的字符串?

感謝

回答

0

假設你JObject類看起來莫名其妙地像下面的示例中,你可以做到以下幾點:

string[] states = json.features.SelectMany(f => f.attributes).ToArray(); 

這就產生了與三個條目馬里蘭州,紐約州和賓夕法尼亞州的一個陣列。

全樣本:

class JObject 
{ 
    public Feature[] Features { get; set; } 
} 

class Feature 
{ 
    public string[] Attributes { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     Feature f1 = new Feature { Attributes = new[] { "Maryland" } }; 
     Feature f2 = new Feature { Attributes = new[] { "New York" } }; 
     Feature f3 = new Feature { Attributes = new[] { "Pennsylvania" } }; 

     JObject state = new JObject 
     { 
      Features = new[] { f1, f2, f3 } 
     }; 

     string[] states = state.Features.SelectMany(f => f.Attributes).ToArray(); 
    } 
} 
+0

感謝您的幫助。我按照你的建議使用SelectMany,併發布我的最終代碼。 – chuck

+0

下面是代碼(對不起,我不能看到如何使用代碼風格的評論):
變種R = response.Content.ReadAsStringAsync()結果; var json =(JObject)JsonConvert.DeserializeObject(f); 。 變種arrayStates = JSON [ 「特徵」]的SelectMany(F => F [ 「屬性」])ToArray的(); 列表 lstStates =新列表(); 的foreach(在arrayStates VAR JT) { lstStates.Add(jt.First()的ToString()); } – chuck