我想序列化一个刷新令牌并将其发送到客户端。
然后在返回时,我想反序列化并读取它。
这是我的密码。
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";
我尝试使用JsonNode["UserName"].Value
,但它不工作。
2条答案
按热度按时间9avjhtql1#
因为你使用的是
dynamic
,所以所有后续的变量也都解析为dynamic
,只需要声明一个类型(例如序列化结果为string
),然后使用indexer +GetValue
:3npbholx2#
反序列化后的类型将是JsonNode,如果尝试使用动态,反序列化后的类型将是JsonElement,因此使用动态也无法获得任何结果,可以使用Parse
你可以用更简单的方法创建一个json字符串,而不需要使用选项