簡體   English   中英

解析JSON時使用動態關鍵字

[英]using dynamic keyword when parse JSON

我是在C#中使用dynamic關鍵字的新手。 看起來很簡單,但是我似乎無法有效地使用它。

我從Facebook看到以下示例:

var client = new FacebookClient();
dynamic me = client.Get("totten");
string firstname = me.first_name;

它工作正常,但是如果您在調試器中查看me ,則可以看到client.Get()返回簡單的JSON。 在Facebook文檔中也是如此:

該請求的結果是一個動態對象,其中包含各種屬性,例如first_name,last_name,用戶名等。您可以通過在Web瀏覽器中瀏覽http://graph.facebook.com/totten來查看此請求的值。 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庫來解析字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM