json-lib 的XML转JSON list的转换
来源:互联网 发布:js初学者 编辑:程序博客网 时间:2024/06/06 02:23
开发中越到一个坑爹问题,webserver 返回的list是 一个和多个 json-lib 翻译的不同, 在java bean中 是list ,一个的化会变成Object 多个才会变成array 对前台造成了很大的困难
比如
<
member_bankcard_querylist_response
>
<
list
>
<
bank_code
>6222023202033815035</
bank_code
>
<
status
>未审核</
status
>
</
list
>
<
success
>true</
success
>
<
sign
>8B9EEE0911F8CDC965D025911691E779</
sign
>
</
member_bankcard_querylist_response
>
翻译的是
{"member_bankcard_querylist_response": {
"list": {
"bank_code": "6222023202033815035",
"status": "未审核"
},
"success": "true",
"sign": "8B9EEE0911F8CDC965D025911691E779"
}}
但是
<
member_bankcard_querylist_response
>
<
list
>
<
bank_code
>6222023202033815035</
bank_code
>
<
status
>未审核</
status
>
</
list
>
<
list
>
<
bank_code
>6222023202033815035</
bank_code
>
<
status
>未审核</
status
>
</
list
>
<
success
>true</
success
>
<
sign
>8B9EEE0911F8CDC965D025911691E779</
sign
>
</
member_bankcard_querylist_response
>
转移之后就是
{"member_bankcard_querylist_response": {
"list": [
{
"bank_code": "6222023202033815035",
"status": "未审核"
},
{
"bank_code": "6222023202033815035",
"status": "未审核"
}
],
"success": "true",
"sign": "8B9EEE0911F8CDC965D025911691E779"
}}
想要的是都是数组,因为对于别人开发不可能进行修改.这个折磨了很久,尝试了各种办法,最后只能修改json-lib的源码来进行处理
json-lib 是根据 xml attribute的值来判断的 比如 class="array" 就处理成array class="String" 就处理成string
我们自定义了一个 class="list"
在XMLSerializer 修改处理函数
if
(clazz.compareToIgnoreCase(JSONTypes.LIST) ==
0
) {
if
(!jsonObject.has(key)) {
jsonObject.element(key,
new
JSONArray()
.element(simplifyValue(
jsonObject,
processObjectElement(element,
defaultType))));
((JSONArray) jsonObject.get(key)).setExpandElements(
true
);
classProcessed =
true
;
}
}
比如
<
member_bankcard_querylist_response
>
<
list class="list"
>
<
bank_code
>6222023202033815035</
bank_code
>
<
status
>未审核</
status
>
</
list
>
<
success
>true</
success
>
<
sign
>8B9EEE0911F8CDC965D025911691E779</
sign
>
</
member_bankcard_querylist_response
>
转换后
{"member_bankcard_querylist_response": {
"list": [ {
"bank_code": "6222023202033815035",
"status": "未审核"
}],
"success": "true",
"sign": "8B9EEE0911F8CDC965D025911691E779"
}}
在webserver中需要增加xml的描述
import
java.io.Serializable;
import
javax.xml.bind.annotation.XmlAttribute;
import
javax.xml.bind.annotation.XmlRootElement;
/**
* 返回xml描述改对象为List ,在json-lib转义的时候发现list.size() == 1 的时候改回Array
* @author JueYue
* @date 2015年4月23日 下午4:39:48
*/
@XmlRootElement
public
class
XmlListBase
implements
Serializable {
private
static
final
long
serialVersionUID = 1L;
private
String beanType =
"list"
;
@XmlAttribute
(name =
"class"
)
public
String getBeanType() {
return
beanType;
}
public
void
setBeanType(String beanType) {
this
.beanType = beanType;
}
}
只要继承这个类就可以了,得到的xml 就会加上class的attribute,可能是个个例也可能帮到大家
1 0
- json-lib 的XML转JSON list的转换
- json-lib的json转换
- JavaBean、JSON、XML的相互转换,JSON-lib(2.4)
- JSON-lib框架,JSON转换、XML转换
- 使用json-lib把JSON对象转换成java bean list的例子
- JSON-lib框架,转换JSON、XML
- 【JSON】json与List的相互转换
- [JSON-lib框架]使java对象、json、xml之间的转换不再困难
- [JSON-lib框架]使java对象、json、xml之间的转换不再困难
- json:Json-lib框架——实现java对象与json、xml的互转
- Json和List的转换
- Json和List的转换
- Json-lib 如何转换日期格式的字段 json-->java
- 使用json-lib进行Java和JSON之间的转换
- 使用json-lib进行Java和JSON之间的转换
- 使用json-lib进行Java和JSON之间的转换
- 使用json-lib进行Java和JSON之间的转换
- 使用json-lib进行Java和JSON之间的转换
- 电信141p122第16题
- 作业
- jquery uploadify 上传控件ASP.NET使用总结
- 2015-4-23
- poi导出Excel的两种方式
- json-lib 的XML转JSON list的转换
- LINUX:浅谈目录与普通文件权限的意义
- vs2010+openCV 配置
- java第三天
- xcode gdb/lldb调试命令
- 思科CCNA第四学期第三章答案
- Cocos2d-x数据加密解密详解
- awk算术运算
- 欢迎使用CSDN-markdown编辑器