public class User{
String id;
String name;
//get and set
}
public class Root{
String returnCode;
List<User> userList;
//get and set
}
当root.userList 仅包含一个元素时,Json格式为
{userList:{id:1, name:n}}
两个时格式正常:
{userList:[{id:1, name:n},{id:2, name:n}]}
怎么样让一个元素时,集合外层也含 “[ ]” ?????
网上说设置:
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="serializeAsArray" value="true" />
</bean>
试过了,没有用,求大神给条出路~~~~
------解决思路----------------------
cxf传递复杂对象挺麻烦的,建议传递xml然后在客户端解析比较好
------解决思路----------------------
不能手动将UserList转成 JsonArray么?
------解决思路----------------------
楼主是输出json的时候吗,那你替换JSONProvider即可,之前做jaxrs的cxf时做过,你可以自己定义个JSONProvider继承org.apache.cxf.jaxrs.provider.json.JSONProvider只需对public boolean isWriteable(Class<?> type, Type genericType, Annotation[] anns, MediaType mt) ;方法和public void writeTo(T obj, Class<?> cls, Type genericType,Annotation[] anns, MediaType m,MultivaluedMap<String, Object> headers, OutputStream os) throws IOException方法进行重写,isWriteable方法是用来writeTo之前判断是否能输出,writeTo则是真正的输出方法,原来的JSONProvider是用JAXB方式输出json对象的,你可以改成用其他的例如json-lib ,jackson, gson,这种json的标准工具包来序列化输出,jackson的有提供jaxrs的jsonProvider的第三方jar你可以到maven的中心仓库搜jackson-jaxrs就能看到。写好后只需在你spring配置cxf的地方
<jaxrs:server>
<jaxrs:providers>
<ref bean="你的jsonProvider"/>
</jaxrs:providers>
</jaxrs:server>
关于Provider的配置cxf的官网说的非常详细http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-ConfiguringJSONprovider