C# 如何仅从JSON字符串反序列化属性值?
我正在一个Web API项目中试用JWT auth,下面是获取令牌的代码:C# 如何仅从JSON字符串反序列化属性值?,c#,json,C#,Json,我正在一个Web API项目中试用JWT auth,下面是获取令牌的代码: public static async Task Main(string[] args) { var login = new {username = "mario", password = "secret"}; var content = new StringContent(JsonConvert.SerializeObject(login), Encoding.UTF8, "application/js
public static async Task Main(string[] args)
{
var login = new {username = "mario", password = "secret"};
var content = new StringContent(JsonConvert.SerializeObject(login), Encoding.UTF8, "application/json");
var resp = await _client.PostAsync("api/Token", content);
var json = await resp.Content.ReadAsStringAsync();
}
然而json
的最终值看起来像:
{ "token":"eyJhbGciOiJIUz...AXRbztetz_WhI"}
var token = JsonConvert.DeserializeObject<???>(json);
我想做一些类似的事情:
{ "token":"eyJhbGciOiJIUz...AXRbztetz_WhI"}
var token = JsonConvert.DeserializeObject<???>(json);
var-token=JsonConvert.DeserializeObject(json);
但是当我使用
JsonConvert.DeserializeObject<string>(json)
JsonConvert.DeserializeObject(json)
我得到一个JsonReaderException
:
分析值时遇到意外字符:{.Path“”,第行
1,位置1
现在,如何反序列化该json以获取
令牌
属性的字符串值?您可以执行以下操作:
var parsedJson = JObject.Parse(json);
var token = (string)parsedJson["token"];
或
classtokenjsonresult{
公共字符串标记{get;set;}
}
var parsedJson=JsonConvert.DeserializeObject(json);
var token=parsedJson.token;
您可以执行以下操作:
var parsedJson = JObject.Parse(json);
var token = (string)parsedJson["token"];
或
classtokenjsonresult{
公共字符串标记{get;set;}
}
var parsedJson=JsonConvert.DeserializeObject(json);
var token=parsedJson.token;
您可以定义一个匿名类型用作模板,并读取如下属性:
using Newtonsoft.Json;
var input = @"{'token':'eyJhbGciOiJIUzAXRbztetz_WhI'}";
var template = new { token = string.Empty };
var result = JsonConvert.DeserializeAnonymousType(input, template);
Console.WriteLine(result.token);
输出:
eyJhbGciOiJIUzAXRbztetz_WhI
您可以定义一个匿名类型用作模板,并读取如下属性:
using Newtonsoft.Json;
var input = @"{'token':'eyJhbGciOiJIUzAXRbztetz_WhI'}";
var template = new { token = string.Empty };
var result = JsonConvert.DeserializeAnonymousType(input, template);
Console.WriteLine(result.token);
输出:
eyJhbGciOiJIUzAXRbztetz_WhI
var-token=(string)JObject.Parse(json)[“token”]
var-token=(string)JObject.Parse(json)[“token”]
谢谢。您的第一个选项简单得多,效果很好。对我来说,它可以处理少量的JSON。但是,对于具有许多属性和对象层次结构的复杂查询结果,第二个选项做得更好。谢谢。您的第一个选项简单得多,效果很好。对我来说,它可以处理少量的JSON。但是,对于许多属性和对象层次结构,第二个做得更好。