這裏是我的新的答案。
你將不得不使用JavaScriptSerializer
爲您傳入的JSON的一個問題是這樣的:
[
{
"node_title":"<a href=\"/item/brickell-point\">Brickell Point</a>",
"main image":"<img typeof=\"foaf:Image\" src=\"http://collectionking.com/sites/default/files/styles/collection_list/public/BrickellPoint_front.jpg\" width=\"200\" height=\"250\" alt=\"\" />",
"nid":"123"
},
{
"node_title":"<a href=\"/item/flagler-street-bridge\">Flagler Street Bridge</a>",
"main image":"<img typeof=\"foaf:Image\" src=\"http://collectionking.com/sites/default/files/styles/collection_list/public/FlaglerStreetBridge_Miami_River.Front_.jpg\" width=\"200\" height=\"250\" alt=\"\" />",
"nid":"124"
}
]
,有一個空間的圖像屬性它 ......這不是accomplishable,讓我們用JSON.NET爲此。
步驟1 - 右鍵點擊你的項目的References
並選擇Manage Nuget Packages
和 「在線」 選項卡,安裝JSON.NET
之後,使用此代碼:
// grab information
using (var wc = new WebClient()) {
json = wc.DownloadString(url);
}
// deserialize using JSON.NET
var result = Newtonsoft.Json.JsonConvert.DeserializeObject<ck[]>(json);
// output
foreach (var i in result)
{
lblTitle.Text = i.node_title;
lblNid.Text = i.nid;
imgCk.ImageUrl = i.main_image;}
}
和請記得修改您的ck
對象爲
public class ck
{
public string node_title { get; set; }
public string nid { get; set; }
[Newtonsoft.Json.JsonProperty(PropertyName = "main image")]
public string main_image { get; set; }
}
我們使用JsonProperty
到映射我們正在接收的正確屬性。
要提取的標題和圖像進行標記,而且因爲我不喜歡的正則表達式,我用:
private static string ExtractImageFromTag(string tag)
{
int start = tag.IndexOf("src=\""),
end = tag.IndexOf("\"", start + 6);
return tag.Substring(start + 5, end - start - 5);
}
private static string ExtractTitleFromTag(string tag)
{
int start = tag.IndexOf(">"),
end = tag.IndexOf("<", start + 1);
return tag.Substring(start + 1, end - start - 1);
}
所以,你可以用它你的自我爲:
// output
foreach (var i in result)
{
// for this example, let's grab the last
lblTitle.Text= ExtractTitleFromTag(i.node_title);
lblNid.Text= i.nid;
imgCk.ImageUrl= ExtractImageFromTag(i.main_image);
}
現在... 你確實知道你的foreach
只會得到接收JSON的最後一項嗎?因爲你不
你應該簡單地做:
foreach (var i in result)
{
i.node_title = ExtractTitleFromTag(i.node_title);
i.main_image = ExtractImageFromTag(i.main_image);
}
,並使用DataGrid來顯示出比入口多,例如。
myDataGrid.Source = ck;
你能告訴我們你的'ck'對象嗎? (該類) – balexandre
public class ck { public string node_title; public string main_image; public string nid; } –
這就是沒有好,JSON有'主要image'不'main_image'(不帶下劃線),看看我的新的答案,它解決所有的煩惱...... – balexandre