Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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# 如何从源中获取特定字符串?_C#_Json - Fatal编程技术网

C# 如何从源中获取特定字符串?

C# 如何从源中获取特定字符串?,c#,json,C#,Json,我想创建一个显示当前信息的应用程序,我可以使用一个简单(至少看起来很简单)的API获取信息 现在,您可以通过访问网站来使用API,并输入用户名。URL将生成类似以下内容的内容site.web/api/public/user?name=Usename。 在那一页上是我需要的所有信息,以一行“代码”的形式 {"uniqueId":"hhus-7723dec98ecb9bc6643f10588e0bb3f4","name":"Username","figureString":"hr-125-40.hd

我想创建一个显示当前信息的应用程序,我可以使用一个简单(至少看起来很简单)的API获取信息

现在,您可以通过访问网站来使用API,并输入用户名。URL将生成类似以下内容的内容
site.web/api/public/user?name=Usename
。 在那一页上是我需要的所有信息,以一行“代码”的形式

{"uniqueId":"hhus-7723dec98ecb9bc6643f10588e0bb3f4","name":"Username","figureString":"hr-125-40.hd-209-1369.ch-210-64.lg-270-1408.he-3329-1408-1408","selectedBadges":[],"motto":"sample txt","memberSince":"2012-08-25T14:01:04.000+0000","profileVisible":true,"lastWebAccess":null}
我想提取此信息并将其显示在我的程序中,例如:

{"uniqueId":"this is an ID"}
我只想显示实际的ID:这是一个ID


谢谢你的帮助

您正在接收的格式被调用。有很多库可以轻松阅读,C#中使用最广泛的是

如果只需要提取一个属性,可以执行以下操作:

string json = ...
var obj = JObject.Parse(json);
string uniqueId = obj["uniqueId"].Value<string>();
public class MyClass
{
    public string uniqueId { get; set; }
}
string json=。。。
var obj=JObject.Parse(json);
字符串uniqueId=obj[“uniqueId”].Value();

如果您还需要其他属性,那么使用反序列化可能更容易:创建一个具有与JSON对象相同属性的类,并使用
JsonConvert.DeserializeObject
将JSON读入类的实例中。

调用您接收的格式。有很多库可以轻松阅读,C#中使用最广泛的是

如果只需要提取一个属性,可以执行以下操作:

string json = ...
var obj = JObject.Parse(json);
string uniqueId = obj["uniqueId"].Value<string>();
public class MyClass
{
    public string uniqueId { get; set; }
}
string json=。。。
var obj=JObject.Parse(json);
字符串uniqueId=obj[“uniqueId”].Value();

如果您还需要其他属性,那么使用反序列化可能更容易:创建一个具有与JSON对象相同属性的类,并使用
JsonConvert.DeserializeObject
将JSON读入类的实例中。

您引用的一行代码是JSON数据。它以“键”的格式存储:“值”、“键:值”、“键:值”等

您应该看看Newtonsoft.Json,它可以帮助您做到这一点:解析Json数据:)


您所指的一行代码是JSON数据。它以“键”的格式存储:“值”、“键:值”、“键:值”等

您应该看看Newtonsoft.Json,它可以帮助您做到这一点:解析Json数据:)


为您将这一切捆绑在一起

using System.IO;
using System.Net;
using Newtonsoft.Json.Linq;
...
WebClient client = new WebClient();
Stream stream = client.OpenRead("http://site.web/api/public/user?name=Usename");
StreamReader reader = new StreamReader(stream);
string userJson = reader.ReadLine();
reader.Close();

JObject jObject = JObject.Parse(userJson);
string uniqueId = (string)jObject["uniqueId"];

为你把这一切绑在一起

using System.IO;
using System.Net;
using Newtonsoft.Json.Linq;
...
WebClient client = new WebClient();
Stream stream = client.OpenRead("http://site.web/api/public/user?name=Usename");
StreamReader reader = new StreamReader(stream);
string userJson = reader.ReadLine();
reader.Close();

JObject jObject = JObject.Parse(userJson);
string uniqueId = (string)jObject["uniqueId"];

这是Json的一个示例。如果要将数据反序列化到您定义的类,最安全的类型安全方法

这样的类可以如下所示:

string json = ...
var obj = JObject.Parse(json);
string uniqueId = obj["uniqueId"].Value<string>();
public class MyClass
{
    public string uniqueId { get; set; }
}
如果数据是字符串形式的,则可以使用Newtonsoft.Json nuget包对其进行反序列化

MyClass obj = JsonConvert.Deserialize<MyClass>(myJsonString);
MyClass obj=JsonConvert.Deserialize(myJsonString);
如果您从http获取数据,那么使用能够为您执行反序列化的客户机就更容易了。在nuget软件包Microsoft.AspNet.WebApi.client中可以找到这样的客户端

using(var client = new HttpClient())
{
    var response = await client.GetAsync(myUrl);
    response.EnsureSuccessStatusCode();
    MyClass obj = await response.Content.ReadAsAsync<MyClass>();
}
使用(var-client=new-HttpClient())
{
var response=await client.GetAsync(myUrl);
response.EnsureSuccessStatusCode();
MyClass obj=等待响应.Content.ReadAsAsync();
}
当然,这假设服务器符合标准,并将其内容类型指定为application/json


好处:您反序列化到的类可以从以下站点的示例自动生成:。

这是一个Json示例。如果要将数据反序列化到您定义的类,最安全的类型安全方法

这样的类可以如下所示:

string json = ...
var obj = JObject.Parse(json);
string uniqueId = obj["uniqueId"].Value<string>();
public class MyClass
{
    public string uniqueId { get; set; }
}
如果数据是字符串形式的,则可以使用Newtonsoft.Json nuget包对其进行反序列化

MyClass obj = JsonConvert.Deserialize<MyClass>(myJsonString);
MyClass obj=JsonConvert.Deserialize(myJsonString);
如果您从http获取数据,那么使用能够为您执行反序列化的客户机就更容易了。在nuget软件包Microsoft.AspNet.WebApi.client中可以找到这样的客户端

using(var client = new HttpClient())
{
    var response = await client.GetAsync(myUrl);
    response.EnsureSuccessStatusCode();
    MyClass obj = await response.Content.ReadAsAsync<MyClass>();
}
使用(var-client=new-HttpClient())
{
var response=await client.GetAsync(myUrl);
response.EnsureSuccessStatusCode();
MyClass obj=等待响应.Content.ReadAsAsync();
}
当然,这假设服务器符合标准,并将其内容类型指定为application/json


好处:您反序列化到的类可以从以下站点的示例自动生成:。

我使用webclient下载json字符串,但由于某种原因,这不起作用,与此相同。引发异常:System.dll中的“System.Net.WebException”其他信息:远程服务器返回错误:(463)。它适用于其他api,如facebook的。。。只是不适用于我正在使用的网站。我使用webclient下载json字符串,但出于某种原因,它不起作用,这一点也一样。引发异常:System.dll中的“System.Net.WebException”其他信息:远程服务器返回错误:(463)。它适用于其他api,如facebook的。。。只是不适合我使用的网站。谢谢,终于弄明白了:D汉克斯,终于弄明白了:D