Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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客户端库查找REST_C#_Json_Web Services_Rest_.net 3.5 - Fatal编程技术网

C# 正在使用JSON客户端库查找REST

C# 正在使用JSON客户端库查找REST,c#,json,web-services,rest,.net-3.5,C#,Json,Web Services,Rest,.net 3.5,我需要连接到通过REST接口提供JSON的端点。我真的找不到任何能以连贯的方式结合这两种技术的东西 我正在寻找一个可以让我快速入门的库。来自WCF Web API的HttpCLient和JSONValue类型应该会让您上路。下载源代码并查看示例。在客户机上使用JSON有许多示例 也看到 我想看看。这是非常直接的开始和运行,并有一个积极的追随者 入门指南: 反序列化:您可以使用库,它利用了DynamicObject 一些用法示例: public static void GoogleGeoCode(

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


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

来自WCF Web API的HttpCLient和JSONValue类型应该会让您上路。下载源代码并查看示例。在客户机上使用JSON有许多示例

也看到

我想看看。这是非常直接的开始和运行,并有一个积极的追随者

入门指南:

反序列化:

您可以使用库,它利用了
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 + "\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");
        }
    }
}
这可能是最简单的方法之一

后台: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>();
使用ServiceStack.Text;
//创建我们的arguments对象:
对象args=new
{
您的=“一些”,
properties=“其他”,
here=“Value”,
};
var resultString=fullUrl.PostJsonToUrl(args);
results=resultString.Trim().FromJson();

在我看来,
PostJsonToUrl
FromJson
扩展方法是一些很好的语法糖。

一些博客展示了如何使用WCF@oleksii实现这一点。大多数链接详细介绍了如何创建一个分发JSON的服务。我需要一个易于使用的库。不幸的是,根据标签,我只能使用.NET 3.5,因此无法使用
dynamic
。抱歉,我错过了。但您仍然可以使用Json.Net库解析返回的Json字符串(
JObject.parse
JsonConvert.DeserializeObject
)@AngryHacker,我编辑了我的答案,避免了.NET4功能。