[英]Way to Deserialize JSON from HttpWebResponse without 3rd party frameworks
[英]Way to Deserialize JSON from HttpWebResponse
我試圖找出解析.NET 3.5中傳入的JSON服務器端的最佳方法。 我從JSON Formate的HttpWebResponse收到“title”。 所以我必須檢索每個標題並存儲在數據庫中。 所以請提供檢索每個標題的代碼。
public class MyObject
{
public ArrayList list { get; set; }
}
var request = WebRequest.Create("https://api.dailymotion.com/videos?fields=description,thumbnail_medium_url%2Ctitle&search=Good+Morning");
using (var twitpicResponse = (HttpWebResponse)request.GetResponse())
{
using (var reader = new StreamReader(twitpicResponse.GetResponseStream()))
{
JavaScriptSerializer js = new JavaScriptSerializer();
string objText = reader.ReadToEnd();
MyObject myojb = (MyObject)js.Deserialize(objText, typeof(MyObject));
}
}
我在myojb中收到了Title,但是如何從myojb中檢索每個Title。
使用這段代碼片段通過使用dynamic
對象獲取Title
。
.NET 4.0及更高版本
JavaScriptSerializer js = new JavaScriptSerializer();
var obj = js.Deserialize<dynamic>(reader.ReadToEnd());
foreach (var o in obj["list"])
{
var title = o["title"];
}
.NET 3.5及更低版本
JavaScriptSerializer js = new JavaScriptSerializer();
var obj = js.Deserialize<Dictionary<string, object>>(reader.ReadToEnd());
foreach (var o in (ArrayList)obj["list"])
{
if (o is Dictionary<string, object>)
var title = (o as Dictionary<string, object>)["title"];
}
使用Linq:
JavaScriptSerializer js = new JavaScriptSerializer();
var obj = js.Deserialize<Dictionary<string, object>>(reader.ReadToEnd());
var titles = ((ArrayList)obj["list"]).Cast<Dictionary<string, object>>()
.Select(s => s["title"].ToString()).ToArray<string>();
序列化為dynamic
對象
using (var reader = new StreamReader(twitpicResponse.GetResponseStream()))
{
JavaScriptSerializer js = new JavaScriptSerializer();
var objects = js.Deserialize<dynamic>(reader.ReadToEnd());
foreach (var o in objects)
{
Console.WriteLine(o["title"]);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.