當前我有一個項目,獲取以下示例數據(我只想檢索此json字符串中的id並將它們填充到IEnumerables中(如下所述):使用JSON.NET將子數據集合反序列化爲數據集合
在拉鍊碼{
"states": [
{
"id": "AL",
"text": "Alabama (AL)"
},
{
"id": "CO",
"text": "Colorado (CO)"
}
],
"cities": [
{
"id": 71761,
"text": "New Brockton, AL"
},
{
"id": 74988,
"text": "Nathrop, CO"
}
],
"zipCodes": []
}
通知,我得到一個空集,因此不存在「ID」或「文本」。
我希望能夠創建一個從這個JSON中發現的性質幾個IEnumerables字符串
我創建了一個名爲Location的對象,就是看這樣的:
public class Location
{
public IEnumerable<string> States { get; set; }
public IEnumerable<string> ZipCodes { get; set; }
public IEnumerable<decimal> Cities { get; set; }
}
我發現要對這個辦法的最好辦法是通過一個做每個數據屬性之一,轉換,formValues是JSON字符串:
JArray arrStates = (JArray)formValues["states"];
JArray arrCities = (JArray)formValues["cities"];
JArray arrZip = (JArray)formValues["zipCodes"];
,然後在設定的位置對象的屬性是這樣:
Location loc = new Location();
loc.States = arrStates.Children().Select(m=>m["id"].Value<string>());
loc.ZipCodes = arrCities.Children().Select(m=>m["id"].Value<string>());
loc.Cities = arrZip.Children().Select(m=>m["id"].Value<string>());
我想知道是否有這樣做的,而不是做所有每當我的JSON響應增加了一個新的p此代碼維護的一個更好的辦法roperty。實際上,我認爲將會有約10個屬性添加到json字符串中。
我希望將它縮小到我可以更新Location對象的位置,並讓json自動映射到屬性。或者至少有一個解決方案比我現在做的維護更少。
另外我想知道JsonConvert.DeserializeObject
是否適用於我的情況;但閱讀JSON.NET對待一個IEnumerable作爲一個數組,所以我難住這一個。