问题标签 [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.

0 投票
3 回答
71271 浏览

java - 使用杰克逊反序列化为自定义对象的 HashMap

我有以下课程:

当我执行以下代码时:

生成的 json 字符串如下所示:

我的问题是让上面的 json 字符串去序列化回

目的。

我的反序列化代码如下所示:

它使用正确的键反序列化为 HashMap,但不会为值创建主题对象。我不知道在 readValue() 方法中指定什么而不是“HashMap.class”。

任何帮助,将不胜感激。

0 投票
2 回答
3471 浏览

xml-serialization - 将 ArrayList 中的对象序列化为 XML 时丢失类型元素

在使用 Jackson 序列化为 XML 时,我似乎遇到了问题。我的代码如下:

测试容器

测试孩子

采用

  • 序列化:

    XmlMapper xm = new XmlMapper(); TestContainer tc = xm.readValue(sb.toString(), TestContainer.class);

  • 反序列化:

    System.out.println(xm.writeValueAsString(tc)); tc = xm.readValue(sb.toString(), TestContainer.class);

我正在做的是从类路径上的文件夹中加载 XML 文件,并将文件的内容放入 StringBuffer 中。问题是为对象集合生成的 XML。在编写 XML 时,我想要类似的东西:

但我得到:

我不确定我在这里错过了什么。我对序列化/反序列化的 JSON 部分没有问题,只有 XML。我尝试使用 Jackson 和 JAXB 注释来关闭包装,我尝试使用以下注释:

  • @JsonRootName
  • @JsonProperty
  • @JacksonXmlElementWrapper
  • @杰克逊元素
  • @XmlElementWrapper
  • @XmlElement

我很确定这对我来说是愚蠢的,但任何帮助将不胜感激。

0 投票
1 回答
5351 浏览

json - 高效解析大型 JSON 数组的前四个元素

我正在使用Jackson从 jsoninputStream中解析 JSON,如下所示:

这是原始提要链接:http ://uhunt.felix-halim.net/api/p

我想解析它并只保留每个数组的前 4 个元素并跳过其他 18 个元素。

到目前为止我尝试过的代码结构:

由于这个提要非常大,我需要以更少的开销和内存有效地执行此操作。还有三种模型来处理 JSON:Streaming APIData BindingTree Model。哪一个适合我的目的?

如何使用 Jackson 有效地解析这个 json?如何跳过这 18 个元素并跳转到下一个数组以获得更好的性能?

编辑:(解决方案)

Jackson并且GSon两者几乎都以相同的机制工作(增量模式,因为内容是增量读取和写入的),我正在切换到GSON它具有功能skipValue()(非常适合名称)。尽管杰克逊的nextToken()工作方式对我skipValue()来说GSON似乎更灵活。感谢@Kowser bro 的推荐,我之前了解过GSON,但不知何故忽略了它。这是我的工作代码:

0 投票
4 回答
90258 浏览

java - JSON:尝试反序列化具有空值的对象时出现 JsonMappingException

我尝试反序列化包含空属性并具有JsonMappingException.

我所做的:

但是:如果要扔掉"firstName = null"财产-一切正常!我的意思是传递下一个字符串:

问题:如何避免此异常或保证 Jackson 在序列化期间忽略空值?

抛出:

信息:

原因:

原因: java.lang.NullPointerException

0 投票
2 回答
3912 浏览

android - 数组反序列化的Gson数组

我有以下 JSON 结构:

Category 的模型类(为简单起见,省略了一些字段,如 title),用于反映 JSON 结构:

我正在尝试使用 Gson 库(2.2.4)解析它,很难将内部数组反序列化为 arraylist:

Category.subCategories 始终为空。

0 投票
1 回答
982 浏览

java - 用于将类名称字符串映射到实际类定义的 Jackson 自定义反序列化

我正在使用 Jackson 自定义反序列化器来解析 JSON 文件。在这个文件中有一堆条目,键为“class”,值为类的名称(没有完整的包名)。反序列化器知道一堆预定义的(硬)路径来搜索任何类。自定义反序列化器应查找关键字“class”(在解析 JSON 时),然后根据值(类名字符串)在预定义的路径中搜索并实例化具有匹配类名的对象。

我已经实现了 JacksonDeserializers接口并覆盖了一堆回调:findBeanDeserializer, findBeanDeserializer, ... 但是,当解析器看到键值对并根据它采取不同的行动findEnumDeserializer时,这并不能让我捕捉到事件。class:ClassName

任何帮助或指示将不胜感激。

一个示例 JSON

0 投票
3 回答
2510 浏览

c# - 如何在 C# 中反序列化具有固定类型标头和变体类型主体的 JSON?

我的 json 字符串包括一个固定类型的标头和非固定类型的主体,如下所示:

在运行时,我可以从配置文件中获取 Body 的类型,但是如何通过 DataContractJsonSerializer.ReadObject() 将 json 反消毒为对象指定类型?

示例代码:

在这里我可以正确获取 Header(returnObj.Header.Message) ,但 returnObj.Body 不是 MyAssembly.MyTypeName 的类型,我无法获取它的属性。

解决此类问题的任何建议?

0 投票
1 回答
6527 浏览

symfony - 在 symfony2 中创建 JMS 序列化程序处理程序

我试图按照相关文档,在这里:
http://jmsyst.com/libs/serializer/master/configuration
这里
http://jmsyst.com/libs/serializer/master/handlers
和这里
http://jmsyst.com /bundles/JMSSerializerBundle/master/cookbook/custom_handlers

我在尝试获取 symfony2 中的构建器对象时遇到了困难(请参阅此对象的第二个链接)。该服务是一个已经构建的序列化程序。我应该在哪里实例化我自己的处理程序?

更新:
我正在研究一种可能的解决方案:
$builder = \JMS\Serializer\SerializerBuilder::create();
或者
$builder = new \JMS\Serializer\SerializerBuilder();
这可能会起作用,但让已经实例化的序列化程序使用我的处理程序会很好。要在控制器中获取序列化程序服务:$serializer = $this->get('jms.serializer');

0 投票
4 回答
102768 浏览

c# - 如何反序列化 JSON 数据?

我是处理 JSON 数据的新手。

我正在从 Web 服务读取数据。发回的查询数据如下:

有没有办法以这样的方式反序列化这些数据,即无需我首先定义对象的样子就可以生成基础对象?在上面的示例中,对象由第一行定义:

通常,Web 服务将返回格式化为二维 JSON 数组的查询数据,其中第一行提供列名,后续行提供数据值。

0 投票
1 回答
7124 浏览

c# - 如何反序列化没有名称的 JSON 数组?

我无法弄清楚如何编写一个类来反序列化 .Net 中 JSON 中的对象列表。

从 JSON 规范中,我们了解到这是有效的 JSON:

所以我构建了这个类来处理反序列化:

尽管将有效的 Json 传递给该方法,反序列化的对象仍为 null。

我尝试过的其他失败的事情包括:使 Locations 成为一个数组而不是一个列表(例如: public Location[] Location; ),以及反序列化到 location 即使 Json 包含一个位置数组。

那么,.Net 开发人员应该如何反序列化对象数组呢?我希望上述方法有效,但事实并非如此。