Json反序列化是将json字符串转换为对象实例(通常是类)的过程。
Symfony - 如何指定根以使用 JMS\Serializer 将 json 数组反序列化为对象
我收到来自某个服务器的对 API 请求的 json 响应,格式如下: { “数据”: { #结果在这里 } } 但是我需要在“dat ...
Jackson反序列化convertValue vs readValue
我有一个包含 JSONObjects 的 org.json.JSONArray,我正在尝试将它们映射到 POJO。我知道我想要映射到的 POJO 的类型。我有 2 个选项,我想找出哪个是...
Objectmapper.readerforupdating 不适用于嵌套对象
我在 Objectmapper.readerforupdating 中遇到问题,在视图的帮助下使用不同的写入权限,它在主实体上工作正常,但在嵌套对象上工作不正常。我有以下考试......
JSON 值无法转换为 System.Collections.Generic.Dictionary`2[System.String,System.String]
连载前- “欢迎页面配置”:{ “欢迎标题文本”:{ “风格”: { “颜色”:“#FFFFFF” }, ...
Converting Json to C# Class Desrializer errors on List
我有这个 json 对象 - 在 view monde [{ "网址标题": "", “地点”: ””, “网址”:“” }, { "Urltitle": "&q...
我正在使用 Jackson 反序列化几个共享某些属性的 JSON 对象: { “错误”: ””, “结果”: { "行号": "2", "行&
如何使用 System.Text.Json 正确反序列化具有 IReadOnlyCollection<T> 的类?
我有以下课程: 公共密封类 SomeClass { [JsonConstructor()] 公共 SomeClass(IEnumerable myItems) { InternalMyItems = 新收藏 我有以下课程: public sealed class SomeClass { [JsonConstructor()] public SomeClass(IEnumerable<string> myItems) { InternalMyItems = new Collection<string>(myItems.ToArray()); MyItems = new ReadOnlyCollection<string>(InternalMyItems); } public IReadOnlyCollection<string> MyItems { get; } private Collection<string> InternalMyItems { get; } } 序列化似乎工作正常: { "MyItems": [ "A", "B", "C" ] } 反序列化好像不行。理想情况下,我想坚持使用 ReadOnlyCollection<T> 和 Collection<T> 而不必更改为其他类型。此示例代码在尝试反序列化时抛出异常: var options = new JsonSerializerOptions() { WriteIndented = true }; var items = new[] { "A", "B", "C" }; var instance = new SomeClass(items); var json = JsonSerializer.Serialize(instance, options); var copy = JsonSerializer.Deserialize<SomeClass>(json, options); InvalidOperationException:反序列化中的每个参数 “UserQuery+SomeClass”类型的构造函数必须绑定到一个对象 反序列化的属性或字段。每个参数名称必须匹配 具有对象上的属性或字段。仅考虑字段 当启用“JsonSerializerOptions.IncludeFields”时。比赛可以 不区分大小写。
我有如下的java类 公开课文件{ @ID 私有字符串标识; @PartitionKey 私有字符串分区键; 私有 Map 属性; } 这里的
我有一个具有 Jackson 依赖项的 Spring Boot 应用程序,以及一个具有以下代码的服务: Dto dto = new ObjectMapper().readValue(jsonString, Dto.class); 我有一个类似于这个的 JSON: { &quo...
JsonConvert.DeserializeObject 解析响应 - 帮助解析一节
我不明白哪里错了,请帮忙。我解析的另一部分一切正常。但无法解析此部分 - 始终为空 { “交付选项”:{ “地址”:{ ...
我有一个问题,因为我在 2 天内没有回答没有键值的 json 解析。 我正在使用序列化,json 格式如下。 { “项目”:[ [ { ...
想知道是否有可能以某种方式将动态 JSON 对象(无固定模式)转换为 java 对象? 例如: 第一次,我可以在运行时使用以下 JSON 对象登陆: { “
如何使用 C# System.Text.Json 反序列化匿名对象并访问其属性?
我有以下代码: 变种模型=新 { 名称=“亚历山大” }; var serializedModel = JsonSerializer.Serialize(模型); var deserializedModel = JsonSerializer.Deserialize 我有以下代码: var model = new { Name = "Alexander" }; var serializedModel = JsonSerializer.Serialize(model); var deserializedModel = JsonSerializer.Deserialize<object>(serializedModel); var name = deserializedModel!.GetType().GetProperty("Name"); name 变量为 null,因为“Name”属性似乎不存在。反序列化时我没有模型对象,只有 JSON 字符串。 我试过使用 Newtonsoft 的 JsonConvert.DeserializeObject(serializedModel),似乎工作正常。但是,我想使用 System.Text.Json。另外,我必须使用.GetType().GetProperty(...),因为它是在我将反序列化对象传递给的外部库中完成的。 JsonSerializer.Deserialize<object>(serializedModel) 等同于 var JsonSerializer.Deserialize<JsonElement>(serializedModel); 所以根据您的要求,您可以使用它: var deserializedModel = JsonSerializer.Deserialize<JsonElement>(serializedModel); if (deserializedModel.TryGetProperty("Name", out var nameP)) { Console.WriteLine(nameP.ToString()); } 出于实验目的,您可以使用非泛型方法并提供Type实例(怀疑它在真实应用程序中是否有用): var deserializedModel = JsonSerializer.Deserialize(serializedModel, model.GetType()); 但通常最好坚持标准方法,只创建用于反序列化的类。即 class MyClass { public string Name { get; set; } } var x = JsonSerializer.Deserialize<MyClass>(serializedModel); 您还可以通过 System.Text.Json(包括 JsonNode 和 JsonDocument API)以其他方式执行动态反序列化 您可能不知道导致 JSON 的“原始”类型。但是,如果您对形状有所了解(例如“它总是有一个名为 Name 的字符串属性”),那么没有什么可以阻止您反序列化为与该形状匹配的类型。例如: using System; using System.Text.Json; public class Program { public static void Main() { var model = new { Name = "Alexander" }; var serializedModel = JsonSerializer.Serialize(model); var deserializedModel = JsonSerializer.Deserialize<HasName>(serializedModel); SomeExternalLib.Foo(deserializedModel); } } class SomeExternalLib { public static void Foo(object o) { var nameProperty = o.GetType().GetProperty("Name"); var name = nameProperty.GetValue(o); Console.WriteLine("I got the name: " + name); } } class HasName { public string Name { get; set; } } 可在this fiddle.中运行 在最初的问题上花了一些时间后,我能够使用 Reflection.Emit 让它运行,这实际上可能是实现我最初要求的唯一方法,因为您拥有 JSON 的属性并且必须生成一个类在具有所述属性的运行时。 可以在这里找到更详细的答案:https://stackoverflow.com/a/29428640 如果您实际上不需要那么复杂的东西,那么您可以尝试反序列化为ExpandoObject. 只需要一行代码 string name = (string) JsonObject.Parse(serializedModel).AsObject()["Name"]; //"Alexander" 更新 但如果你想要荒谬的方式,恕我直言,这就是 var deserializedModel = JsonSerializer.Deserialize<object>(serializedModel); string name = ((JsonElement)deserializedModel).GetProperty("Name").GetString(); 对不起,我永远不会明白为什么它会这样工作。当我使用 text.json 时,我只是尝试以最笨拙的方式做所有事情,由内而外,这通常很有帮助。你必须问一个 text.json 团队他们是如何做这种库的。 只是为了比较使用 newtonsoft 和 text.json //using Newtonsoft.Json; string name = (string) JObject.FromObject(model)["Name"]; //using System.Text.Json; var serializedModel = JsonSerializer.Serialize(model); string name = JsonSerializer.Deserialize<JsonElement>(serializedModel) .GetProperty("Name").GetString();
我想在我的网站上做分页。 我对供应商的网站进行 API 调用。我获取数据,反序列化并将其保存在我的模型中,然后获取这些对象以供查看。 我也得到了所有唯一的查询名称......
我是 C# 的新手,主要尝试遵循我在网上找到的示例。希望有人能在下面解释.. 我有一个 json 中的对象列表,我试图用 System.Text.JSON 反序列化....
Java GSON 不会反序列化所有字段,即使它们属于同一类型
我有课程: 公共类 SentPlayer { 最终字符串 uuid; 最终字符串玩家名; 最终字符串 universeUuid; /* 一些获取方法和构造函数 */ } 公共类 PlayerMsg { ...
比较两个 JSON 对象并返回一个包含差异列表的 JSON 对象 c# [重复]
我正在将视图模型转换为 JSON 对象并插入到数据库中。 现在我想从数据库中选择任意两个 JSON 对象并比较这两个 JSON 对象,看看是否有任何差...
我在 GCP Ubuntu 22.04 上使用 django 3.2 和 docker 运行 Django rest api。运行 Web 服务器容器时出现错误: django.core.serializers.base.DeserializationError: 问题
用 com.fasterxml.jackson.databind.ObjectMapper 替换 new Gson().fromJson() 的用法,涵盖所有情况
目前我们正在使用 Gson 将 JSON String 转换为 Map。要求完全取消 Gson 的使用,并用 ObjectMapper 代替它。 目前如果我们要转换
我正在尝试将 JSON 文件反序列化为我的 Java 类。我已经尝试了所有可能的解决方案,我可以通过 JSON 注释找到,例如 @JsonSubTypes、@JsonTypeInfo 和 CLASS、NAME a...