[英]How to read values from JsonNode in System.Text.Json
I want to serialize a refresh token and send it to the client.我想序列化一个刷新令牌并将其发送给客户端。
Then on return, I want to deserialize and read it.然后返回时,我想反序列化并阅读它。
Here's my code.这是我的代码。
using System.Text.Json;
using System.Dynamic;
using System;
using System.Text.Encodings.Web;
using System.Text.Unicode;
using System.Text.Json.Nodes;
dynamic token = new ExpandoObject();
token.UserName = "John";
token.Expires = DateTime.Now.AddMinutes(5);
token.CreateDate = DateTime.Now;
var options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DictionaryKeyPolicy = JsonNamingPolicy.CamelCase,
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};
var refreshToken = JsonSerializer.Serialize(token, options);
Console.WriteLine(refreshToken);
var deserializedToken = JsonSerializer.Deserialize<JsonNode>(refreshToken, options);
var userName = "How can I extract username from JsonNode";
I tried to use JsonNode["UserName"].Value
, but it does not work.我尝试使用
JsonNode["UserName"].Value
,但它不起作用。
Since you are using dynamic
all subsequent variables are resolved as dynamic
too.由于您使用的是
dynamic
所有后续变量也被解析为dynamic
。 Just declare one of the types (for example string
for serialization result) and use indexer + GetValue
:只需声明其中一种类型(例如序列化结果的
string
)并使用 indexer + GetValue
:
string refreshToken = JsonSerializer.Serialize(token, options);
JsonNode? deserializedToken = JsonSerializer.Deserialize<JsonNode>(refreshToken, options);
var userName = deserializedToken["userName"].GetValue<string>();
you can just use Parse你可以只使用解析
JsonNode deserializedToken = JsonNode.Parse(refreshToken);
string userName = (string) deserializedToken["userName"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.