[英]How do I deserialize only a property value from a JSON string?
我正在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/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);
但是当我使用
JsonConvert.DeserializeObject<string>(json)
我得到了JsonReaderException
:
解析值{时遇到意外字符。 路径'',第1行,位置1。
现在,我如何反序列化该json以获取token
属性的字符串值?
您可以执行以下操作:
var parsedJson = JObject.Parse(json);
var token = (string)parsedJson["token"];
要么
class TokenJsonResult{
public string token {get;set;}
}
var parsedJson = JsonConvert.DeserializeObject<TokenJsonResult>(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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.