我有一个像这样的CXF Web服务:
@Service("MyWebService")
public class MyWebService implements IMyWebService {
@Autowired
private IMyService MyService;
public ResponseObject doSomething(RequestObject requestObject) {
ResponseObject responseObject = new ResponseObject;
.
// do something....
.
.
return responseObject;
}
}
Run Code Online (Sandbox Code Playgroud)
期望输入JSON,比如说:
{ "requestObject" : { "amount" : 12.50, "userName" : "abcd123" } }
Run Code Online (Sandbox Code Playgroud)
并生成一个输出JSON,如下所示:
{ "responseObject" : { "success" : "true", "errorCode" : 0 } }
Run Code Online (Sandbox Code Playgroud)
有没有办法配置CXF,使其接受以下格式的输入JSON:
{ "amount" : 12.50, "userName" : "abcd123" }
Run Code Online (Sandbox Code Playgroud)
我需要在输入和输出JSON中去掉对象类型名称'requestObject'/'responseObject'.这甚至可能吗?
感谢您的帮助!
如果您使用的是maven,则JSONProvider类位于:
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-extension-providers</artifactId>
<version>2.7.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
您可能需要另一个json提供程序属性来实现您的目标:
<jaxrs:providers>
<bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="dropRootElement" value="true"/>
<property name="dropCollectionWrapperElement" value="true"/>
<property name="serializeAsArray" value="true"/>
<property name="supportUnwrapped" value="true"/>
</bean>
</jaxrs:providers>
Run Code Online (Sandbox Code Playgroud)
如果您通过 springs xml 配置文件(如 applicationContext.xml)配置 json 提供程序,则只需添加以下配置即可工作。
<jaxrs:providers>
<bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="dropRootElement" value="true" />
<property name="supportUnwrapped" value="true" />
</bean>
</jaxrs:providers>
Run Code Online (Sandbox Code Playgroud)
dropRootElement 告诉 json 提供者删除根元素。请参阅此JSON 支持以获取更多配置和理解。
| 归档时间: |
|
| 查看次数: |
4791 次 |
| 最近记录: |