问题标签 [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.
json - JSON中的反序列化和序列化是什么?
我已经看到了使用 JSON 的术语“反序列化”和“序列化”。他们的意思是什么?
c# - 有时是数组有时是对象时反序列化JSON
我在使用 JSON.NET 库反序列化从 Facebook 返回的数据时遇到了一些麻烦。
从一个简单的墙贴返回的 JSON 如下所示:
为照片返回的 JSON 如下所示:
一切都很好,我没有问题。我现在遇到了一个来自移动客户端的简单墙贴,其中包含以下 JSON,并且反序列化现在失败了,这一个帖子:
这是我反序列化的类:
如果不使用 FacebookMediaJsonConverter,我会收到错误消息:无法将 JSON 对象反序列化为类型“System.Collections.Generic.List`1[FacebookMedia]”。这是有道理的,因为在 JSON 中,Media 不是一个集合。
我发现这篇文章描述了一个类似的问题,所以我试图走这条路:反序列化 JSON,有时值是一个数组,有时是“”(空白字符串)
我的转换器看起来像:
这工作正常,除了我现在得到一个新的例外:
在 JsonSerializerInternalReader.cs 内部,CreateValueInternal():反序列化对象时出现意外令牌:PropertyName
reader.Value 的值是“永久链接”。我可以在 switch 中清楚地看到 JsonToken.PropertyName 没有案例。
我需要在转换器中做一些不同的事情吗?谢谢你的帮助。
php - 在 PHP 中检查字符串是否为 JSON 的最快方法?
我需要一种非常非常快速的方法来检查字符串是否为 JSON。我觉得这不是最好的方法:
有没有性能爱好者想要改进这种方法?
java - GSON 不区分大小写的枚举反序列化
我有一个枚举:
还有一些 JSON:
还有一个类:
当我尝试使用 GSON 反序列化 JSON 时,我收到null
了Event
type 字段,因为 JSON 中 type 字段的大小写与枚举的大小写不匹配。
如果我将枚举更改为以下内容,则一切正常:
但是,我想将枚举常量全部保留为大写。
我假设我需要编写一个适配器,但没有找到任何好的文档或示例。
什么是最好的解决方案?
编辑:
我能够让 JsonDeserializer 工作。有没有更通用的方法来编写它,因为每次枚举值和 JSON 字符串之间的大小写不匹配时都必须编写它是很不幸的。
java - 无法将 java.util.ArrayList 的实例反序列化出 VALUE_STRING
我有一个用 Jersey 构建并部署在 AppEngine 中的 REST 服务。application/json
REST 服务实现了使用媒体类型的动词 PUT 。数据绑定由 Jackson 执行。
动词使用以 JSON 表示的企业-部门关系
在客户端,我使用 gson 将 JSON 表示形式转换为 java 对象。然后,我将对象传递给我的 REST 服务,它工作正常。
问题:
当我的 JSON 表示在集合中只有一项时
服务无法反序列化对象。
正如其他用户所报告的那样,解决方案是添加标志ACCEPT_SINGLE_VALUE_AS_ARRAY
(例如,Jersey: Can not deserialize instance of ArrayList out of String)。尽管如此,我并没有控制它,ObjectMapper
因为在服务方面它是由杰克逊透明地制作的。
问题:
有没有办法ObjectMapper
在服务端配置启用ACCEPT_SINGLE_VALUE_AS_ARRAY
?注释?web.xml
?
代码详情
Java 对象:
REST 服务端:
客户端:
c# - 如何使用 JSON.NET 处理有时是对象、有时是对象数组的值?
我注意到这个问题在 stackoverflow 上还有一些其他结果,但它们似乎不起作用或含糊不清。使用最流行的结果,我把这个放在一起:
问题是当 JSON 返回并被序列化为我的一种自定义类型时,JSON 的一个位有时是一个数组,有时只是一个字符串。如果我的自定义类型有一个字符串,而 JSON 是一个数组,我会收到错误消息。如果 JSON 是一个对象并且我的自定义类型是一个数组,那么反过来也会发生同样的情况。它只是无法将其映射到属性。
我决定解决这个问题,我想覆盖这个特定属性的反序列化,如果它是一个对象,我想将它转换成一个包含 1 个对象的数组。
在我要序列化的对象中,我添加了一个 JsonConverter,我认为它会覆盖它的反序列化方式。
这个想法是自定义转换器会将单个对象转换为数组。因此,如果 JSON 是“Hello”,它会将 person 设置为包含“Hello”的 List,而不是抛出异常,说不能将字符串转换为 List。
如果它已经是一个数组,它应该不理会它。
转换器如下所示:
它不起作用。上面的代码抛出一个异常,试图反序列化单个字符串,说它不能将它转换为 if 语句中的 List(然而,'objecttype' 是一个 List)。
我正在努力理解读写方法在做什么。在 stackoverflow 的另一个答案中,它建议NotImplementedException
在 read 方法中抛出一个。但如果我这样做,就会调用 read 方法并抛出异常。
我认为我在正确的轨道上,但我需要朝着正确的方向轻推。我想我对 ReadJSon 方法的作用及其参数的含义有些困惑。
我真的不明白它的反序列化值是从哪里来的,因为我没有在 Deserialize 方法调用中指定它。
我对这个有点不了解。
c# - 如何:JSON 反序列化
我一直试图找到一种在 C# 中反序列化它的方法,但不幸的是没有运气,,
如果有人可以提供帮助,我将不胜感激,这是 json 数据:
}
编辑:我改变了 json 数据
c# - 类型不可用时跳过反序列化(未引用)
我有一些 json 是通过使用 json.net 序列化在我们不再引用的 dll 中找到的类型而生成的。json 是使用TypeNameHandling.Objects
设置生成的,因此它试图显式加载该类型。
现在我正在尝试反序列化该 json(它实际上嵌入在更大的 json 有效负载中,它将反序列化为Dictionary<string, object>
)。因为我们不再有对所需类型的引用,所以 json.net 正在抛出JsonSerializationException
. 我希望 json.net 使用空白new object()
或null
该字典值(而不是抛出异常)。这将允许我访问字典的其余部分并继续我的快乐方式。这可能吗?
以下是序列化 json 的示例:
我希望反序列化字典看起来像这样:
c# - Twitter API 1 to 1.1 Rss to Json Conversion--WPF Application using C#
由于 twitter 很快就要贬低 API 版本 1,我决定转换旧的应用程序以允许它与新的 1.1 API 一起使用。根据我对 1.1 的了解,我知道您必须在拨打电话之前进行身份验证,并使用 JSON 而不是 RSS 来序列化数据。该应用程序是使用 xmal 和 c# 编码的 WPF
我能够使用 LINQ to Twitter 库成功进行身份验证,但是在使用 JSON 时我迷失了。这是我用于 API v1 的代码
这是推文类的代码
我想知道是否有人可以指出我编写 JSON 等价物的正确方向。提前致谢!
json - 为什么 JSON 反序列化在 C# 中失败?
我正在尝试使用 RunTime Version v2.0.50727 的 Newtonsoft.Json dll 反序列化字符串
版本 4.5.0.0。
目标框架 .Net Framework 2.0
到字符串:
反序列化方法调用
结果 :-
Json 格式更易读:
班级