我得到一个json字符串作为流,并试图将其反序列化为字典
带.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.
json不仅仅包含字符串。作为一个快速(但不是性能)修复,您可以尝试反序列化到字典
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, Object>>(stream, options);
return fullResponse?.ToDictionary(pair => pair.Key, pair => pair.ToString());
}
或手动分析文档:
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 jsonDocument = JsonDocument.Parse(stream);
var dictionary = jsonDocument.RootElement
.EnumerateObject()
.ToDictionary(property => property.Name, property => property.Value.ToString());
return dictionary;
}
我正在尝试使用来部分地反序列化模型,因此其中一个属性被读取为包含原始JSON的字符串。 示例代码 应该生成模型,其中属性将原始JSON中的Info对象作为字符串包含: 它不能开箱即用并抛出异常: System.Text.Json.JsonException:--- 到目前为止我尝试了什么: 并将其应用于模型中 并将选项添加到 尽管如此,它还是抛出了相同的异常: System.Text.Json.J
问题内容: 我有这个字符串: 我正在反序列化对象: 该对象看起来像: 并尝试创建字典: 但得到。 可能是什么问题? 问题答案: 请参阅mridula的答案,了解为什么您会得到null。但是,如果您想直接将json字符串转换为字典,则可以尝试以下代码段。
问题内容: 如何将上述字符串反序列化为java对象。 我正在使用的类是 问题答案: @基达 我假设您可以控制JSON输入字符串的创建方式。我认为JSON字符串格式不正确,无法对地图类型进行默认的GSON反序列化。 我已经修改了输入字符串供您考虑,这将导致非null的LocalLocationId 如果我对输入字符串的假设不正确,请发表评论。 编辑1:由于无法修改输入,请考虑编写自定义解串器。以下是
我的JSON如下所示: 我的课程如下所示: 如何反序列化到映射如和到
问题内容: 我有一个iOS应用程序,需要处理来自Web服务的响应。响应是包含序列化JSON对象的序列化JSON字符串,如下所示: 请注意,此响应是JSON 字符串 ,而不是JSON对象。我需要做的是将字符串反序列化,这样我就可以得到: 然后我可以用来反序列化为。 但是,我该如何第一步?也就是说,如何“解串”字符串,以便拥有序列化的JSON对象? 仅当顶级对象是数组或字典时才有效;它不适用于字符串。
我已经找了很多但仍然没有得到答案到目前为止,任何帮助是非常感谢! 我有一个简单的到字段映射,并尝试将JSON字符串读取到Java对象。 例外情况: java.lang.IllegalArgumentException:无法解析日期值“null”(格式:“dd-mmm-yyyy”):不可解析日期:“null”com.fasterxml.jackson.databind.deser.std.dateD