目录

一、测试数据

二、Str、JSONObject、JSONArray等互转

三、数据遍历、不规则数据整理

四、JsonString转XML

五、XML转JsonString

六、json转map

七、map转xml


一、测试数据

private static String getJsonData() {return "{\n" +"    \"companyNo\": \"C001\",\n" +"    \"supplyNo\": \"S001\",\n" +"    \"orders\": [\n" +"        {\n" +"            \"orderNo\": \"aaa001\",\n" +"            \"orderType\": \"order001\",\n" +"            \"orderAmount\": \"100\",\n" +"            \"creatorDate\": \"20020505\",\n" +"            \"invoiceAmount\": \"500\",\n" +"            \"openItemAmount\": \"700\"\n" +"        },\n" +"        {\n" +"            \"orderNo\": \"ccc002\",\n" +"            \"orderType\": \"order002\",\n" +"            \"orderAmount\": \"600\",\n" +"            \"creatorDate\": \"20010506\",\n" +"            \"invoiceAmount\": \"123\",\n" +"            \"openItemAmount\": \"456\"\n" +"        }\n" +"    ]\n" +"}";}

二、Str、JSONObject、JSONArray等互转

private static void json2json(String reqString) {reqString = "".equals(reqString) ? null : reqString;//string转object对象JSONObject reqJson = JSONObject.parseObject(reqString);//获取对应字段String companyNo = reqJson.getString("companyNo");//JSONObject转JSONArrayString orders = reqJson.getString("orders");JSONArray jsonArray = JSONArray.parseArray(orders);//jsonObject-json互转JSON json = reqJson.getObject("orders", JSON.class);String str = json.toJSONString();JSONObject jsonObject = JSONObject.parseObject(str);JSONArray jsonArray2 = JSONArray.parseArray(str);JSONArray dealArray = dealArray(jsonArray);System.out.println(reqJson);}

三、数据遍历、不规则数据整理

//遍历,处理不规则数据private static JSONArray dealArray(JSONArray array) {JSONArray array2 = new JSONArray();for (int i = 0; i < array.size(); i++) {JSONObject json = array.getJSONObject(i);JSONObject jsonObject = new JSONObject();for (String key : json.keySet()) {jsonObject.put(key, json.get(key).toString().trim());}array2.add(jsonObject);}return array2;}

四、JsonString转XML

    public static String toXml(Object obj) throws UnsupportedEncodingException {ByteArrayOutputStream outputStream = new ByteArrayOutputStream();JAXB.marshal(obj,outputStream);return outputStream.toString("utf8");}

五、XML转JsonString

    public static Object xmlToParam(String xml,Class<?> clazz) throws JAXBException {StringReader reader = new StringReader(xml);JAXBContext jaxbContext = JAXBContext.newInstance(clazz);Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();return unmarshaller.unmarshal(reader);}

六、json转map

public static Map<String, Object> json2Map(String jsonStr) {Map<String, Object> map = new HashMap<>();ObjectMapper objectMapper = new ObjectMapper();if(jsonStr != null && !"".equals(jsonStr)){//最外层解析try {Map jsonObject = objectMapper.readValue(jsonStr, Map.class);for (Object k : jsonObject.keySet()) {Object v = jsonObject.get(k);//如果内层还是数组的话,继续解析if (v instanceof ArrayList) {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Iterator<Map> it = ((ArrayList) v).iterator();while (it.hasNext()) {Map json2 = it.next();list.add(json2Map(objectMapper.writeValueAsString(json2)));}map.put(k.toString(), list);} else {map.put(k.toString(), v);}}} catch (IOException e) {e.printStackTrace();}return map;}else{return null;}}

七、map转xml

public static String jsonToXml(Object json, String rootKey) {Document document = DocumentHelper.createDocument();//设置根节点和命名空间QName qName = new QName(rootKey);//设置命令空间Element element = document.addElement(qName);document.setRootElement(element);ObjectMapper objectMapper = new ObjectMapper();try {JsonObject jsonObject = new JsonParser().parse(objectMapper.writeValueAsString(json)).getAsJsonObject();toXml(jsonObject, document.getRootElement(), null);return document.asXML();} catch (Exception e) {log.error(e.getMessage());throw new AppException(e.getMessage());}
}private static Element toXml(JsonElement jsonElement, Element parentElement, String name) {if (jsonElement instanceof JsonArray) {//是json数据,需继续解析JsonArray sonJsonArray = (JsonArray)jsonElement;for (int i = 0; i < sonJsonArray.size(); i++) {JsonElement arrayElement = sonJsonArray.get(i);toXml(arrayElement, parentElement, name);}}else if (jsonElement instanceof JsonObject) {//说明是一个json对象字符串,需要继续解析JsonObject sonJsonObject = (JsonObject) jsonElement;Element currentElement = null;if (name != null) {currentElement = parentElement.addElement(name);}Set<Map.Entry<String, JsonElement>> set = sonJsonObject.entrySet();for (Map.Entry<String, JsonElement> s : set) {toXml(s.getValue(), currentElement != null ? currentElement : parentElement, s.getKey());}}else if (jsonElement.isJsonNull()){parentElement.addElement(name);}else {//说明是一个键值对的key,可以作为节点插入了addAttribute(parentElement, name, jsonElement.getAsString());}return parentElement;
}private static void addAttribute(Element element, String name, String value) {//增加子节点,并为子节点赋值if (String.valueOf(name.charAt(0)).equals(StringPool.DASH)){// 参数前为 “-”符号的为节点属性 去除“-”符号并添加属性String key=name.substring(1);if (key.equals("xmlns")){Namespace namespace=new Namespace("",value);QName qName=new QName(element.getName(),namespace);element.setQName(qName);}else {element.addAttribute(key,value);}}else if (StringPool.HASH.equals(String.valueOf(name.charAt(0)))){element.addText(value);}else {Element el = element.addElement(name);el.addText(value);}
}

有用请点赞,养成良好习惯!

疑问交流鼓励请留言!

JSON数据转换总结(VIP典藏版)相关推荐

  1. razer inc - hidclass_《原神》× Razer雷蛇典藏版礼盒套装首发 高颜值限量!

    原标题:<原神>× Razer雷蛇典藏版礼盒套装首发 高颜值限量! [宅秘新闻]11月5日晚间, Razer雷蛇官方宣布<原神>× Razer雷蛇典藏版礼盒套装独家首发,套装内 ...

  2. json数据转换成表格_电子表格会让您失望吗? 将行数据转换为JSON树很容易。

    json数据转换成表格 Like many of you, I often have to take the result of SQL queries and convert the rowsets ...

  3. 使用 pqgrid 将JSON数据转换成TABLE

    使用 pqgrid 将JSON数据转换成TABLE <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http: ...

  4. json数据转换异常:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException

    json数据转换异常:net.sf.json.JSONException: java.lang.reflect.InvocationTargetException 参考文章: (1)json数据转换异 ...

  5. Windows环境下32位汇编语言程序设计(典藏版)(含CD光盘1张)

    Windows环境下32位汇编语言程序设计(典藏版)(含CD光盘1张)(畅销10年,经典再现!) 罗云彬 著 ISBN 978-7-121-20759-4 2013年7月出版 定价:99.00元 75 ...

  6. 递归皮层网络RCN识别文本CAPTCHAS的Science论文基础知识和译文 (公号回复“递归皮层网络”可下载PDF典藏版资料)

    递归皮层网络RCN识别文本CAPTCHAS的Science论文基础知识和译文 (公号回复"递归皮层网络"可下载PDF典藏版资料) 原创: 秦陇纪 数据简化DataSimp 今天 数 ...

  7. 百度音乐2013 8.2.8 去广告VIP绿色版|zd423作品

    软件大小:5.82 MB 软件语言:简体中文 软件类型:国产软件 软件授权:免费软件 软件类别:音乐播放 应用平台:Win2003,WinXP,Win7,Win8 软件介绍 百度音乐2013 8.2. ...

  8. json数据转换成excel表格

    在工作中遇到 一个需要把json数据转换成excel的功能,于是网上去搜索在线的工具,还蛮多的, 找了一大圈都不是特别满意,很多都是转了之后就是一个排列好的数据,需要自己复制到excel,类似下图这样 ...

  9. php将json转化成数组,PHP怎么把JSON数据转换成数组?

    在PHP中可以使用"json_decode"函数把JSON数据转换成数组,该函数的语法是"json_decode( $json, $assoc=FALSE, $depth ...

  10. 元计算模拟宇宙人生by剑桥大学材料学博士段晓明 (公号回复“元计算”下载PDF典藏版资料,欢迎转发、赞赏支持科普)

    元计算模拟宇宙人生by剑桥大学材料学博士段晓明 (公号回复"元计算"下载PDF典藏版资料,欢迎转发.赞赏支持科普) 原创: 秦陇纪 科学Sciences 今天 科学Sciences ...

最新文章

  1. 给django视图类添加装饰器
  2. 突破对银河系的传统认知 大量超高能宇宙加速器被发现
  3. linux php oracle 乱码,Linux下Oraclesqlplus中文显示乱码的问题的解决
  4. 10.2 梯度下降-机器学习笔记-斯坦福吴恩达教授
  5. 【机器学习应用】将在2020年实现盈利的12个基于AI和ML的最佳应用创意
  6. echart label 不随值变化位置_炼丹神器来了! 模型结构、训练日志、特征提取都能可视化,调参不慌了!...
  7. Azure恢复服务-DPM联机备份SQL数据库
  8. c语言中把一个数缩小十倍_小学数学易错点:一个数缩小10倍?缩小到它的十分之一?哪个正确?...
  9. OpenGL进阶演示样例1——动态画线(虚线、实线、颜色、速度等)
  10. UE4 Blueprint编译过程
  11. jmeter+接口测试练习+接口关联+Json提取
  12. 利用旧服务器制作存储资源池,想将存储系统整合,又想实现存储资源池化?
  13. 有锚点的链接页面刷新的问题
  14. 程序员如何实现财富自由?
  15. java判断闰年中闰月_农历中闰年闰月的算法
  16. 【Prometheus 自主无人机平台 】无人机蜂群拦截系统作战构想与关键技术论文解读
  17. 实验项目名称:微波技术与天线CST仿真实验
  18. 特斯拉充电电流设置多大_【干货】特斯拉电动汽车4种充电方式详解!
  19. Linux笔记-ftp主动和被动模式下iptables的规则配置
  20. 云计算、大数据和人工智能之间的关系----详细说明

热门文章

  1. 用了华为手机多年,你却不知道的,10个手机实用小技巧
  2. 光纤收发器的基础知识
  3. iMeta | 2022年iMeta进展与审稿人致谢
  4. 直播预告|以京东数智化实践为例,看“京东云云舰”如何助力企业打造敏捷中台?
  5. Git提交代码完整流程
  6. 埃森哲最新研究认为,全球企业高管尚未看清5G应用潜力
  7. office365前端js效果
  8. 运动型多功能车和皮卡隔音材料行业调研报告 - 市场现状分析与发展前景预测
  9. U盘没反应?我来帮你
  10. 阿里2018实习生招聘 算法工程师(一)选择题自总