从HttpWebResponse反序列化JSON的方法
我试图找出在.NET 3.5中解析传入的JSON服务器端的最佳方法。 我在JSON Formate中从HttpWebResponse接收“标题”。 所以我必须检索每个标题并存储在数据库中。 所以请提供检索每个标题的代码。
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中检索每个标题。
使用这段代码片段通过使用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"]);
}
}
“我试图找出解析传入的JSON的最佳方式”
我会使用json.net。 它很容易反序列化/序列化json数据。
看看这里:
如何发布JSON到服务器?
链接地址: http://www.djcxy.com/p/45873.html