xml字符串转换为json对象
来源:互联网 发布:oracle数据库有可视化 编辑:程序博客网 时间:2024/06/06 00:35
前段时间在做一个生活缴费项目,需要调用一个第三方缴费平台的接口,这个平台是基于http请求,但是返回的内容是xml字符串。当时是想把xml字符串直接转换为对象,但是各个接口返回的内容都不同,无法转换为通用对象,只能每个接口单独转换。后来想把底层调用方法做统一封装,由业务直接调用,具体数据交由业务去判断,于是就考虑了xml字符串转换为json对象的方案。
其实这个的难点是xml字符串转换为json字符串。至于json字符串转换为json对象,阿里的fastjson已经实现。
google了很久,发现有个开源的满足需求:org.json
放上maven依赖
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20151123</version>
< /dependency>
import org.json.JSONException;
import org.json.JSONObject;
import org.json.XML;
public class JsonUtils {
publicstatic String xml2jsonString(String xml)throws JSONException{
JSONObject xmlJSONObj = XML.toJSONObject(xml);
returnxmlJSONObj.toString();
}
}
json字符串转换为json对象代码实现如下:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
JSONObject jsonObject = null;
try{
jsonObject = JSON.parseObject(jsonString);
}catch(Exception e){
logger.error("json串转json对象时发生异常,json串="+jsonString);
throw new RuntimeException("json串转json对象时发生异常,json串="+jsonString,e);
}
return jsonObject;
不过org.json有个问题比较麻烦,xml如下所示:
< ?xml version="1.0" encoding="gb2312"?>
<payUnitinfo>
<err_msg></err_msg>
<retcode>1</retcode>
<payUnits>
<payUnit>
<provinceId>v1955</provinceId>
<cityId>v1961</cityId>
<payProjectId>c2680</payProjectId>
<payUnitId>v96564</payUnitId>
<payUnitName>浙江省电费</payUnitName>
</payUnit>
<payUnit>
<provinceId>v1955</provinceId>
<cityId>v1961</cityId>
<payProjectId>c2680</payProjectId>
<payUnitId>v85002</payUnitId>
<payUnitName>国网浙江省电力公司</payUnitName>
</payUnit>
</payUnits>
</payUnitinfo>
当xml中出现多个<payUnit>时,org.json将xml中的<payUnit>转换为json数组格式的字符串,当只有一个<payUnit>时,org.json将xml中的<payUnit>转换为json对象格式的字符串。
假设jsonObject是上述xml转换为json对象后的变量,则通过以下方式获取:
JSONObject payUnitsJsonObject = jsonObject.getJSONObject("payUnitinfo").getJSONObject("payUnits");
JSONObject payUnitJsonObject = null;
JSONArray payUnitJsonArray = null;
Object payUnitObject = payUnitsJsonObject.get("payUnit");
if(payUnitObject instanceof JSONObject){
payUnitJsonObject = (JSONObject)payUnitObject;
}else if(payUnitObject instanceof JSONArray){
payUnitJsonArray = (JSONArray)payUnitObject;
}
- xml字符串转换为json对象
- xml字符串转换为json对象
- json字符串转换为对象
- JSON字符串转换为对象
- javascript 转换Json字符串为JSON对象
- JSON字符串转换为JSON对象
- JSON对象转换为JSON字符串
- 前台JSON字符串转换为JSON对象
- js-json字符串转换为json对象
- JSON转换工具类-JSON对象转换为字符串-json字符串转换为对象
- json字符串转换为xml格式输出
- 字符串转换为对象,然后对象转换为json串
- java 中xml转换为json对象
- Json格式对象转换为XML
- xml标签转换为json对象
- 转换字符串为json对象的方法
- 转换字符串为json对象的方法
- 转换字符串为json对象的方法
- 清除浏览器缓存的几种方法
- Spring Boot + MyBatis + Freemarker 环境搭建
- c# list 查找重复项 Distinct()方法
- SDUT 2017 Autumn Single Contest K
- spring boot与thymeleaf页面传参两种方式
- xml字符串转换为json对象
- 常用的console 的方法
- 中国海洋大学 软件工程 考研交流
- Python2.x与3.x版本区别
- NoSQL之MongoDB简介
- 又遇IDEA 乱输入代码,也不报错问题,解决后,笔而记之。
- 695. Max Area of Island
- 第九讲 数组排序算法:冒泡排序、选择排序、插入排序及二分查找技术
- 友盟推送