当前位置: 首页 > 知识库问答 >
问题:

将Play/Jerkson配置为反序列化单引号(非标准)JSON,无需复制大量代码

胡俊美
2023-03-14

在Play 2.0应用程序中,我需要从一个我无法控制的源中反序列化一些JSON,该源在字符串周围使用单引号——而JSON规范要求使用双引号。

使用Jackson的解决方案在这里:配置Jackson以反序列化单引号(无效)JSON

但是试图在play2.0中实现这个解决方案,我遇到了静态对象和私有类的障碍……在初始化时,用一个实现上面链接的解决方案的对象来替换对象JerksonJson应该就足够了,但是因为它是一个静态对象,它不能扩展,我试图将它复制到我的代码中,我需要拖动类PlaySerializers,PlayDeserializers,JsValueDeserializer,……我停在这里,因为它看起来太多了。

有没有干净的解决办法?

共有2个答案

茹高义
2023-03-14

我意识到这对Play框架部分可能没有太大帮助,但也许你可以用Jackson Scala模块代替Jerkson?这样做可以使只使用注册了Scala模块的ObjectMapper更容易,而不必使用Jerkson特定的处理程序。

仲阳朔
2023-03-14

尝试通过将其中的每个'替换为"来修复无效的json字符串怎么样?

如果只用于指定字符串,那就可以了。

 类似资料:
  • 问题内容: 我是使用杰克逊图书馆的新手。 我正在尝试执行此操作(请参见下文),并且抛出错误。 例外: 39)): was expecting double-quote to start field name at [Source: java.io.StringReader@1afd1810; line: 1, column: 3] at org.codehaus.jackson.JsonParse

  • 问题内容: 使用Jackson 2,我正在寻找一种 通用的 方式将对象序列化为单个值(然后序列化它们,然后再填充该单个字段),而不必重复创建JsonSerializer / JsonDeserializer来处理每种情况。@JsonIdentityInfo批注非常接近,但由于我知道,它将始终对完整的子对象进行序列化,因此略微遗漏了该标记。 这是我想做的一个例子。给定的类: 我希望Order可以序列

  • 我想在Backbone.js模型中对表单进行一些服务器前验证。要做到这一点,我需要将用户输入从表单转换为可用的数据。我找到了三种方法来做到这一点: 不幸的是,没有一个提供我所需要的好的可扩展和可开发的JSON对象。我已经查看了几个关于Stack ;溢出的问题,但我只发现了一些额外的库。 underscore.js、当前的jQuery或backbone.js是否提供了一个helper方法? 产出 b

  • 我是一个新手,正在尝试编写一个简单的应用程序,从大学校中提取一些学校数据。组织。json数据如下所示: 我的结构如下所示: 当我运行代码时,我得到“json:无法将对象解组为[]main.SchoolStruct类型的Go值” 我正在使用gopencils库来提出我的请求,并成功地将其用于非常简单的请求。你知道我可能做错了什么吗?

  • 问题内容: 我在Android上的Java中具有以下枚举,并且我希望能够将传入的JSON字符串/对象中的整数反序列化为此Enum类型。我一直在Jackson和GSON上受到欢迎,但在我正在使用的JSON.org包上却什么也没有。 有没有简单的方法可以做到这一点,或者我需要更改JSON解码器?谢谢。 问题答案: 将返回您的数组,然后可以遍历数组并检查

  • 问题内容: 我在使用AJAX访问的Java服务器应用程序中有一个字符串。它看起来像以下内容: 当从服务器提取字符串时,是否有一种简单的方法可以将其转换为活动的JavaScript对象(或数组)?还是我必须手动拆分字符串并手动构建对象? 问题答案: 现代浏览器支持。 在不浏览器,您可以包括在库中。