重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
使用json-lib的XMLSerializer对象
成都创新互联是少有的成都做网站、网站制作、成都外贸网站建设、营销型企业网站、微信小程序定制开发、手机APP,开发、制作、设计、友情链接、推广优化一站式服务网络公司,成立于2013年,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评
(1)创建XMLSerializer对象
(2)使用XMLSerializer的read(xml)方法即可
[java] view plain copy
/* 第二种方法,使用json-lib提供的方法 */
//创建 XMLSerializer对象
XMLSerializer xmlSerializer = new XMLSerializer();
//将xml转为json(注:如果是元素的属性,会在json里的key前加一个@标识)
String result = xmlSerializer.read(xml).toString();
//输出json内容
System.out.println(result);
3.测试
[java] view plain copy
public class Test {
public static void main(String[] args) {
String xml = "class id="
+ "'1'"
+ "studentnameaaaaaa/nameage21/age/studentstudentnamebbbbbb/nameage22/age/student/class";
/* 第一种方法,使用JSON-JAVA提供的方法 */
//将xml转为json
JSONObject xmlJSONObj = XML.toJSONObject(xml);
//设置缩进
String jsonPrettyPrintString = xmlJSONObj.toString(4);
//输出格式化后的json
System.out.println(jsonPrettyPrintString);
/* 第二种方法,使用json-lib提供的方法 */
//创建 XMLSerializer对象
XMLSerializer xmlSerializer = new XMLSerializer();
//将xml转为json(注:如果是元素的属性,会在json里的key前加一个@标识)
String result = xmlSerializer.read(xml).toString();
//输出json内容
System.out.println(result);
}
第一种方法输出:
[java] view plain copy
{"class": {
"id": 1,
"student": [
{
"age": 21,
"name": "aaaaaa"
},
{
"age": 22,
"name": "bbbbbb"
}
]
}}
第二种方法输出:
[java] view plain copy
{"@id":"1","student":[{"name":"aaaaaa","age":"21"},{"name":"bbbbbb","age":"22"}]}
放上maven依赖
dependency
groupIdorg.json/groupId
artifactIdjson/artifactId
version20151123/version
/dependency
xml字符串转换为json字符串代码实现如下:
import org.json.JSONException;
import org.json.JSONObject;
import org.json.XML;
public class JsonUtils {
public static String xml2jsonString(String xml)throws JSONException{
JSONObject xmlJSONObj = XML.toJSONObject(xml);
return xmlJSONObj.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
retcode1/retcode
payUnits
payUnit
provinceIdv1955/provinceId
cityIdv1961/cityId
payProjectIdc2680/payProjectId
payUnitIdv96564/payUnitId
payUnitName浙江省电费/payUnitName
/payUnit
payUnit
provinceIdv1955/provinceId
cityIdv1961/cityId
payProjectIdc2680/payProjectId
payUnitIdv85002/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;
}
之所以使用JSON一般是为了跳过XML这个过程,使JAVA类型到客户端的javascript类型可以不需要再解析XML就直接生成.为什么会从XML转换成json?
个人建议是通过Java解析XML,生成JavaBean或者其它类型的java对象,然后使用GSON,将java对象转化成json.GSON是google开发的一个包,小巧而功能强大,可定制性也很强,推荐使用.
其实这个应该没有什么标准答案啦,只要写成的格式前台或者后台按照这个格式解析就可以啦,比如
[{'title':'programming','price':'$4.00','name':'C++'}],
这是一条信息,如果多条就用逗号隔开如:
[{'title':'programming','price':'$4.00','name':'C++'},{'title':'programming','price':'$4.00','name':'C++'},]]
有的情况用单引号或者双引号都可,有时只能用双引号好像,记不清了
网站可以直接转:
如果是代码中使用,可以读取xml文件转成对象后,再用newtonsoft.json转成json对象