寻找带有 JSON 客户端库的 REST [关闭]

Posted

技术标签:

【中文标题】寻找带有 JSON 客户端库的 REST [关闭]【英文标题】:Looking for a REST with JSON client library [closed] 【发布时间】:2012-01-13 10:27:30 【问题描述】:

我需要连接到通过 REST 接口提供 JSON 的端点。我真的找不到任何以连贯的方式结合这两种技术的东西。

我正在寻找一个能让我快速入门的库。

【问题讨论】:

一些博客展示了如何使用 WCF encrypted.google.com/search?q=wcf+rest+json @oleksii 大多数链接详细说明了如何创建分发 JSON 的服务。我需要一个易于使用的库。 【参考方案1】:

您可以使用Json.Net 库和使用DynamicObject 的extension class

一些使用示例:

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 + "\n" + 
            result.content + "\n" + 
            result.unescapedUrl + "\n");
    


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"] + "\n" +
                result["content"] + "\n" +
                result["unescapedUrl"] + "\n");
        
    

【讨论】:

不幸的是,根据标签,我被 .NET 3.5 卡住了,因此无法使用 dynamic 对不起,我错过了。但是您仍然可以使用 Json.Net 库来解析返回的 json 字符串(JObject.ParseJsonConvert.DeserializeObject @AngryHacker,我编辑了我的答案,避免使用 .NET4 功能。【参考方案2】:

我会看看RestSharp。启动和运行非常简单,并且拥有活跃的追随者。

入门指南:https://github.com/restsharp/RestSharp/wiki

反序列化:https://github.com/restsharp/RestSharp/wiki/Deserialization

【讨论】:

【参考方案3】:

来自 WCF Web API 的 HttpCLient 和 JSONValue 类型应该可以帮助您。下载源代码并查看示例。有许多在客户端上使用 JSON 的示例。 http://wcf.codeplex.com/releases

另见

http://blog.alexonasp.net/

【讨论】:

【参考方案4】:

ServiceStack.Text 可能是最简单的方法之一。

背景:ServiceStack.Text是一个独立的、无依赖的序列化库,包含ServiceStack的文本处理功能

示例

using ServiceStack.Text;

//  Create our arguments object:
object args = new

   your = "Some",
   properties = "Other",
   here = "Value",
;

var resultString = fullUrl.PostJsonToUrl(args);
results = resultString.Trim().FromJson<T>();

在我看来,PostJsonToUrlFromJson 扩展方法是一些不错的语法糖。

【讨论】:

以上是关于寻找带有 JSON 客户端库的 REST [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将 REST 添加到 Django [关闭]

Spring REST 控制器返回带有空数据的 JSON [关闭]

Angular REST客户端ngResource无法获取json

根据来自带有 JQuery 的 REST API 的 JSON 响应更改 HTML 结构

是否有完全实现的 REST javascript 客户端? [关闭]

诸如用于测试 HTTP 请求的虚拟 REST 服务器之类的东西? [关闭]