Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析JSON时使用动态关键字_C#_Json_Dynamic - Fatal编程技术网

C# 解析JSON时使用动态关键字

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文档中也有同样的说法: 此请求的结果是一个动态对象,其中包含各种

我是在C#中使用
动态
关键字的新手。它似乎很简单,但我似乎不能有效地使用它

我在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库的帮助下解析字符串