C# 解析JSON时使用动态关键字
我是在C#中使用C# 解析JSON时使用动态关键字,c#,json,dynamic,C#,Json,Dynamic,我是在C#中使用动态关键字的新手。它似乎很简单,但我似乎不能有效地使用它 我在Facebook上看到了这个例子: var client = new FacebookClient(); dynamic me = client.Get("totten"); string firstname = me.first_name; 它工作得很好,但如果您在调试器中查看me,则可以看到client.Get()返回简单的JSON。Facebook文档中也有同样的说法: 此请求的结果是一个动态对象,其中包含各种
动态关键字的新手。它似乎很简单,但我似乎不能有效地使用它
我在Facebook上看到了这个例子:
var client = new FacebookClient();
dynamic me = client.Get("totten");
string firstname = me.first_name;
它工作得很好,但如果您在调试器中查看me
,则可以看到client.Get()
返回简单的JSON。Facebook文档中也有同样的说法:
此请求的结果是一个动态对象,其中包含各种
属性,如名字、姓氏、用户名等。您可以看到
此请求的值通过浏览到
在您的web浏览器中。JSON结果
如下所示
我想对从Foursquare返回的JSON做同样的处理:
private static string GetReturnedUrlFromHttp(string url)
{
HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest;
webRequest.Timeout = 10000;
webRequest.Method = "GET";
WebResponse response = webRequest.GetResponse();
string responseStr = String.Empty;
using (var stream = response.GetResponseStream())
{
var r = new StreamReader(stream);
responseStr = r.ReadToEnd();
}
return responseStr;
}
public static void FillDataFromFoursquareUsingDynamic()
{
string foursquare_url_detail = "https://api.foursquare.com/v2/venues/4b80718df964a520e57230e3?locale=en&client_id=XXX&client_secret=YYY&v=10102013";
dynamic responseStr = GetReturnedUrlFromHttp(foursquare_url_detail);
var response = responseStr.response;
}
我得到了以下错误:
“字符串”不包含“响应”的定义
为什么我会遇到这个错误,是否可以像在Facebook中那样“解析”任何JSON字符串?FacebookClient.Get
不会真正返回JSON字符串。相反,它将字符串解析为一个动态对象,其属性与JSON字符串中值的名称匹配
使用dynamic
不会神奇地将字符串变成具有字符串中定义的属性的对象。相反,您需要首先在JSON.NET之类的JSON库的帮助下解析字符串。FacebookClient.Get
实际上并不返回JSON字符串。相反,它将字符串解析为一个动态对象,其属性与JSON字符串中值的名称匹配
使用dynamic
不会神奇地将字符串变成具有字符串中定义的属性的对象。相反,您需要首先在JSON.NET之类的JSON库的帮助下解析字符串