问题标签 [json-deserialization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如果存在特定字段,是否可以使用 Jackson 多态反序列化来序列化为子类型?
在动物园示例中使用旋转:
Animal
如果没有指定翼展,我想使用多态反序列化来构造实例,如果是,则使用Bird
实例。在 Jackson 中,无类型反序列化通常看起来像这样:
翼展值可以是任何值,如果没有具体匹配的值,Jackson 将使用 defaultImpl 类。
我可能会使用@JsonCreator
:
但是,然后我必须手动处理额外的值并抛出一致的异常,并且不清楚Animal
以后是否会正确序列化。
似乎我可以使用我自己的TypeResolver
or TypeIdResolver
,但这似乎比我自己反序列化原始 json 更有效。此外,TypeResolver
并且TypeIdResolver
似乎本质上假设类型信息是序列化的,所以这些不好用。
实现我自己JsonDeserializer
的挂钩到生命周期以指定类型但仍使用基本的杰克逊注释处理功能是否可行?我一直在看JsonDeserializer.deserializeWithType(...)
,但这似乎将反序列化完全委托给TypeDeserializer
. 还有一个问题是在我知道要使用哪种类型之前,我需要反序列化一些对象。
或者,可能有一种方法可以定位动物园围栏的类型,即使它位于父对象中。
有没有办法通过多态类型处理来做我想做的事情?
java - Json 数组到 Java 类(使用 Gson 反序列化)
我有 Json 响应(命名为 jsonResultAsText):
我想使用 Google 的 gson 库对其进行反序列化。
我有这样的课程:
我想将 json 数据放入 JsonResponse 类。
这是我尝试实现的代码:
但我的 Android 应用程序给出了那个经典错误:不幸的是,<app_name> 已停止。
我知道有很多关于通过 gson 类进行序列化/反序列化的示例,但我找不到类似的问题/示例。
提前致谢。
c# - 为什么 JsonConverter.WriteJson() 从未被调用,尽管 JsonConverter.ReadJson() 确实被调用了?
为什么我的自定义 JsonConverter.WriteJson() 方法没有被调用?
虽然ReadJson
确实被调用:
序列化调用:JsonConvert.SerializeObject(dataModel, Formatting.Indented);
反序列化调用:JsonConvert.DeserializeObject<Model>(raw);
c# - JsonSerializationException
我有一个json
这样的(删除它的一部分,因为它不是问题)
我尝试在 Newton.Json 的帮助下将其反序列化为以下对象:
但收到此错误:
无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1[SubscribeProLib.GetMainAnketaResponse+Anketa+Parameter]' 因为该类型需要 JSON 数组(例如 [ 1,2,3]) 正确反序列化。要修复此错误,要么将 JSON 更改为 JSON 数组(例如 [1,2,3]),要么将反序列化类型更改为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型可以从 JSON 对象反序列化的数组或列表。JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。路径 'obj.param.system',第 61 行,位置 20。
System 属性可能有什么问题?
c# - 在 C# 中反序列化 JSON 数组
我遇到了一个棘手的问题。
我有一个这种格式的 JSON 字符串:
“记录”中的字段可以增加或减少。
所以,我做了这样的课程:
并尝试像这样反序列化:
我做错了什么。但是找不到。你能帮忙吗?
提前致谢。
更新:
实际上我收到错误“无效的 JSON 原语:。” 由于我正在使用以下代码读取文件的字符串:
现在我正在阅读这个文件:
它工作正常。
c# - 在 C# 中反序列化 JSON
我试图在 C# 中反序列化 JSON,但我得到 NullReferenceException,我不知道为什么。
这是我要解析的 JSON:
我正在使用这段代码
为什么我会收到此错误,我该如何解决?
当我将 JSON 更改为
我明白了After parsing a value an unexpected character was encountered: :. Path 'Entries[0]', line 1, position 20.
编辑
我玩过 JSON,下面的那个对我有用:
java - Json:使用 Gson 库时出现反序列化错误
我有应该转换回 Map 类型的 json 字符串。
使用的 JSON:
将 json 转换为 Map 的代码:
错误:
我知道它与类型有关,但我已经指出该类型将在类型标记中显式地为 String。
gson 对象声明如下:
windows-phone-8 - 有效地反序列化不可靠的 JSON
我正在尝试从服务器反序列化 JSON,它有时会省略某些键/值,这使我无法使用它:
我阅读了 JSON.net 文档并继续他的 Linq to JSON 反序列化,如下所示:
一切正常,但我偶尔会得到outofmemoryexceptions
(来自服务器的 JSON 很大)。我已经尝试JsonConverter
从 JSON.net 实现自定义,但是使用嵌套层次结构(3 级深度),JsonConverter
变得太复杂且难以理解,更不用说维护了。
当我运行内存分析器时,我看到超过 150mb 的峰值,这将导致应用程序出现 OOM 异常。在堆部分下,我看到 30-40% 的内存分配是由mscorlib
字符串分配完成的。另一个问题是在循环过程中,有连续的 GC 连续进行。我对它现在的写作方式感到非常厌恶,但我已经无能为力了,有人能帮忙吗?
json - Json.Net 反序列化,保持一些属性未序列化
我有一个看起来像这样的 json 字符串:
我想把它反序列化成一个看起来像这样的类:
基本上不反序列化 Baz 值,而是存储原始字符串。即我希望Baz
序列化后的字符串值为:
"[{\"Pressure\":9001,\"ServesDrinks\":true},{\"Pressure\":0,\"ServesDrinks\":false}]"
我正在使用 Json.Net,但还没有弄清楚如何做到这一点。在理想情况下,我只想在Baz
保留原始 json 的属性上放置一个魔术属性。
我在这里看到了一个非常相似的问题: Partially deserialize with JSON.NET, keep some fields raw
但我确实明白如何采用这种JObject
方法。
(如果有帮助,我知道我要保留的数据是一个列表)
感谢您的帮助!
c# - 如何在 .net 中解析 JSON-C
我不能使用 Youtube API,因为 WP 不支持它们,所以我选择只使用 JSON 响应。好像 Youtube 已经将响应类型更改为 JSON-C,我该如何解析这个?
我试过 Newtonsoft JSON 但它也不支持它,有什么建议吗?谢谢!