【发布时间】:2022-01-13 12:10:28
【问题描述】:
我将一串 json 作为流并尝试将其反序列化为 Dictionary
带有 .NET 6 的 Program.cs:
using System;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
Console.WriteLine("Converting Json...");
var result = await DeserializeJson();
Console.WriteLine($"result: {result}");
async Task<Dictionary<string, string>> DeserializeJson()
{
var jsonText = "{\"number\": 709, \"message\": \"My message here\",\"bool\": true}";
var stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonText));
var options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
NumberHandling = JsonNumberHandling.WriteAsString
};
var fullResponse = await JsonSerializer.DeserializeAsync<Dictionary<string, string>>(stream, options);
return fullResponse;
}
导致的主要错误:
---> System.InvalidOperationException: Cannot get the value of a token type 'Number' as a string.
如果不是因为我设置了序列化选项的句柄数字属性,这将是有意义的。这是已知的失败还是这里有问题?
【问题讨论】:
标签: c# json system.text.json .net-6.0