问题标签 [jettison]
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 - Spring Batch,JdbcExecutionContextDao java.util.Map$Entry 反序列化问题,xstream 1.4.1
我在使用 Spring Batch 2.1.9 时遇到问题:当我使用jobExplorer.getJobExecution(jobExecutionId)时,当 DAO 必须反序列化如下字符串时,我发现了一个问题:
从BATCH_JOB_EXECUTION_CONTEXT表中,使用方法JdbcJobExecutionDao.getJobExecution()
。
我知道春季批处理使用 xstream 1.3,但在我的 Pom 中,我有:
- 弹簧批次 2.1.9;
- xstream 1.4.1(继承自 smooks);
- 抛弃 1.3.3(继承自 cxf);
另外,我读到 xstream 1.3 不能与 jettison 1.3.3 一起正常工作,但使用 xstream 1.3(不包括 pom 中的 xstream 1.4.1)工作正常,而使用 xstream 1.4.1 或专业时,我发现以下异常:
1)我看过代码,我可以配置XStreamExecutionContextStringSerializer来设置reflectionProvider = null(这样就不会使用Provider)?
2)还有其他解决方案可以解决我的问题吗?
谢谢
java - 编组时 Jettison / 字符串以整数形式返回
Jettison 有一个“功能”,早在 2008 年的JIRA 条目中就对其进行了概述,它指的是以下问题:
假设我要求“元素”的值为“00102”;输出可能如下所示:
但现在我将“元素”设置为“102”:
我了解 Jettison 试图提供帮助……但说真的,我不需要它来代表我决定这类事情。不,谢谢。
当前的解决方法
目前,我使用了用户在此处概述的解决方案,他将以下内容添加到 bean 配置中:
这部分解决了这个问题,可以说所有元素都被强制为字符串,即使它们显然是整数。现在,至少,我确切地知道我的数据将包含什么结构,并且元素类型不会在我不知情的情况下从字符串变为整数并再次变回。
问题
但是,我现在无法将另一个元素输出为整数,即使我现在希望这样做。似乎我只能强制元素的输出在整个服务中串起来,而不是在每个元素的基础上。
除了“使用杰克逊”的建议(我无法遵循,因为框架明确使用 Jettison)之外,还有其他方法可以指定我想在 JSON 输出中强制作为字符串的元素吗?
java - 将json写入文本文件,抛弃
我创建了一个 JSONOBject JSONObject features = new JSONObject();
,我想将它存储在一个 txt 文件中。我正在使用 Jettison LIbrary 来处理 json 文件。但是我没有找到将json写入文件的方法。任何想法?
json - 如何在 CXF 的 JAX-RS Restful Web 服务的 POST 正文中接收 JSON 消息?
我正在尝试在 JAX-RS 之上使用 Apache-CXF 开发 REST 服务。对于初学者,我有一个名为的方法test
,它接收 aString message
和int value
. 我希望客户端能够在 POST 消息正文中传递这些参数。我似乎无法做到这一点。
在我在这里粘贴代码之前,这里有一些细节:
- 我正在使用没有 Spring 的 CXF
- 它不是一个网络应用程序,所以我没有带有 web.xml 的 WEB-INF 文件夹
- 我使用 SoapUI 和 Postman(Google Chrome 应用程序)测试服务
使用以下代码,我得到WARNING: javax.ws.rs.BadRequestException: HTTP 400 Bad Request
:
演示服务.java
DemoServiceImpl.java
演示服务器.java
我的 POM.xml(减去根标签中的属性,一切都在那里)
{"message":"hello there!", "value":"50"}
对 URL的测试http://localhost:9090/demoService/test
给出了 HTTP 400 Bad Reuest。
然后我在 SO 上看到了这个问题:How to access parameters in a RESTful POST method并尝试了这个:
在 DemoServer.java 中添加了以下嵌套类:
我还修改了 DemoService 接口和实现,以使用这个类作为test
方法中的参数,尽管这最终仍然不是我想要做的。(只是在这里展示实现,问题已经很长了):
并修复我得到的这个错误:(SEVERE: No message body reader has been found for class DemoService$TestRequest, ContentType: application/json
在 Postman 中我看到错误 415 - 不支持的媒体类型)我将以下依赖项(jettison 和另一件事)添加到 POM.xml:
我在 HTTP POST 请求中使用以下 JSON 消息测试了该服务:
{"testRequest":{"message":"hello there!", "value":"50"}}
这行得通。虽然我使用 TestRequest 类来封装参数的解决方案有效,但这不是我正在寻找的解决方案。我希望能够在 JSON 消息中传递这两个参数,而不必(显式地)引入这个 TestRequest 类。
问题:
- 使用Jersey会更容易实现吗?
- 我没有 web.xml 也没有 WEB-INF 文件夹,所以我不能在 cxf.xml 文件中配置 CXF 可以吗?网上的很多教程似乎都没有使用大量的 XML 配置,但我不想为了做到这一点而部署像 TomEE 或 Spring 或 Glassfish 这样的框架。
- 在网上搜索解决方案时,我遇到了Spring Boot。你会推荐使用它,也许?这会让开发这样的 Web 服务更容易吗?
- 另外,我如何让它以 JSON 格式返回值(或者它不应该为字符串这样做?)
java - 迁移到 Jersey 2,现在需要在 Client 中交互 valueType
迁移到 Jersey 2.0 后,我的 REST 服务似乎以稍微不同的方式提供这个布尔标志。(如果有帮助,我也可以提供服务代码,但这看起来很标准,只需要在客户端上进行不同的交互)
我认为这是因为 JSON 的构建方式随着迁移而改变,但我过去常常使用 Java 代码进行交互,如下所示:
显然这不再起作用了,因为我们现在有一个 valueType 可以交互。有什么方法可以简单地获得这个真/假标志?我一直在努力寻找那里,但运气不佳。
编辑- 也添加服务代码。我在评论中提到了这一点,但是在尝试使用 JSONObject 而不是 javax 中的 JsonObject 时遇到了一些序列化问题,这就是为什么该方面随着迁移而改变的原因。
json - 配置 Wildfly 8.1 以使用 Jettison
我有一个有趣的问题,我的 Wildfly 8.1 安装使用 Jackson(不是 Jackson 2)将类编组为 JSON。我想使用 Jettison 来利用我在课堂上的 JAXB 注释。
为了强制服务器使用 Jettison 而不是 Jackson,我执行了以下步骤:
修改了 POM.xml 依赖项以依赖于resteasy-jettison-provider模块,其范围设置为提供
<依赖>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jettison-provider</artifactId><version>3.0.8.Final</version>
<scope>provided</scope>
</依赖>修改了我的 WEB-INF 目录中的jboss-deployment-structure.xml以包含 jettison 模块并排除所有 jackson 模块:
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.jboss.resteasy.resteasy-jackson-provider"/>
<module name="com.fasterxml.jackson.core.jackson-core"/ >
< 模块名称="com.fasterxml.jackson.core.jackson-annotations" />
< 模块名称="com.fasterxml.jackson.core.jackson-databind" />
< 模块名称="com.fasterxml.jackson. jaxrs.jackson-jaxrs-json-provider" />
< module name="org.jboss.resteasy.resteasy-jackson2-provider" />
</ excludes >
< dependencies >
< module name="org.jboss.resteasy.resteasy-jettison-provider" />
</ 依赖 >
</ 部署 >
</ jboss-部署结构>
当我启动服务器时,我发送一些简单的 JSON 来登录我的应用程序:
但是,当我发送此代码段时,我从服务器收到以下异常:
从那个例外来看,尽管我进行了配置,但似乎仍在使用 Jackson。
谁能指出我做错了什么或我有什么错误配置?
java - 无法使用 XStream / Jettison 反序列化多图
我正在尝试使用 XStream 和 Jettison 序列化和反序列化番石榴的多图。这里有一个简单的测试来说明:
它给出了以下错误:
请注意,当与枚举键一起使用时,此错误尤其集中在 Multimap 上。如果我使用 Map 而不是 multimap,则没有错误。如果我使用 String 而不是 Enum 作为键,则没有错误。此外,如果我序列化为 XML 而不是 JSON(即,在构造函数中没有“JettisonMappedXmlDriver”),它可以完美地工作。
有没有好的解决方案?我目前正在使用一种解决方法,用集合地图替换我的多图,但我更愿意找到一种方法来保留多图。
jersey - Jersey 使用 Jackson 或 Jettison 进行 JSONConfiguration.natural().build()
我正在尝试为 Weblogic 和 Jboss 移植 rest 应用程序。目前我们正在使用球衣作为休息应用程序。带有可移植实现的 jboss 将使用 resteasy。
上下文:在我们的应用程序中,我们是@Provider
使用ContextResolver<JAXBContext>
return JSONJAXBContext
with的类JSONConfiguration.natural().build()
。所以我试图找到Jackson或Jettison的上述配置内部使用的球衣。请帮助我。
java - JSON 仅使用至少 2 个参数进行反序列化
我正在为TomEE Plus 1.7.1实现一个 RESTful 服务应用程序,并使用Jettison作为默认的 json 提供程序。我的实体类有几个外观类,为它们中的每一个提供 CRUD 功能。服务门面由 netbeans 生成。
这是 POST 方法:
使用此方法(在数据库中创建新实例)时出现以下错误:
经过几个小时的尝试,我得到了它的工作:我只需要在方法中添加另一个参数,就像这样:
我不明白为什么我必须添加这个 Context 参数。我不需要上下文变量,所以实际上我想删除它......
有人知道原因吗?
java - Jettison JSON/java , send list of string with json request
I am creating JSON
object and send over the network , like
Also I have links of photos what I want to put into this JSON
How to do it, put and parse... I need one key, and list of values.
Is JSON
array is useful for this?
Thanks