且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

寻找带有 JSON 客户端库的 REST

更新时间:2022-05-19 20:41:53

您可以使用 Json.Net 库以及使用 DynamicObject

You can use Json.Net library and this extension class that makes use of DynamicObject

一些使用示例:

public static void GoogleGeoCode(string address)
{
    string url = "http://maps.googleapis.com/maps/api/geocode/json?sensor=true&address=";
    dynamic googleResults = new Uri(url + address).GetDynamicJsonObject();

    foreach (var result in googleResults.results)
    {
        Console.WriteLine("[" + result.geometry.location.lat + "," + 
                                result.geometry.location.lng + "] " + 
                                result.formatted_address);
    }
}

public static void GoogleSearch(string keyword)
{
    string url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=8&q=";
    dynamic googleResults = new Uri(url + keyword).GetDynamicJsonObject();

    foreach (var result in googleResults.responseData.results)
    {
        Console.WriteLine(
            result.titleNoFormatting + "
" + 
            result.content + "
" + 
            result.unescapedUrl + "
");
    }
}

public static void Twitter(string screenName)
{
    string url = "https://api.twitter.com/1/users/lookup.json?screen_name=" + screenName;
    dynamic result = new Uri(url).GetDynamicJsonObject();
    foreach (var entry in result)
    {
        Console.WriteLine(entry.name + " " + entry.status.created_at);
    }
}

public static void Wikipedia(string query)
{
    string url = "http://en.wikipedia.org/w/api.php?action=opensearch&search=" + query +"&format=json";
    dynamic result = new Uri(url).GetDynamicJsonObject();

    Console.WriteLine("QUESTION: " + result[0]);
    foreach (var entry in result[1])
    {
        Console.WriteLine("ANSWER: " + entry);
    }
}

这是另一个没有 DynamicObject

public static void GoogleSearch2(string keyword)
{
    string url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=8&q="+keyword;

    using(WebClient wc = new WebClient())
    {
        wc.Encoding = System.Text.Encoding.UTF8;
        wc.Headers["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)";
        string jsonStr = wc.DownloadString(url);
        JObject jObject = (JObject)JsonConvert.DeserializeObject(jsonStr);
        foreach (JObject result in jObject["responseData"]["results"])
        {
            Console.WriteLine(
                result["titleNoFormatting"] + "
" +
                result["content"] + "
" +
                result["unescapedUrl"] + "
");
        }
    }
}