xml与json格式互转
最近要整一些报文测试的事情,可当前项目的请求报文格式却不统一,有XML也有JSON,为了一致性,决定统一用JSON格式处理。
xmltodict : Makes working with XML feel like you are working with JSON
1.xml转json
import xmltodict import jsondic = xmltodict.parse("""<mydocument has="an attribute"> <and> <many>elements</many> <many>more elements</many> </and> <plus a="complex"> element as well </plus> </mydocument>""")dic1 = xmltodict.parse("""<?xml version="1.0" encoding="UTF-8"?> <root> <object name="input"> <field name="credit_ccy_code" value="USD"/> <field name="credit_acct_no" value="991200001030"/> <field name="credit_acct_name" value="Test_PA"/> <field name="base_exch_rate" value=""/> <field name="cheque_acct_name" value=""/> <field name="summary_code" value=""/> <field name="forward_cheque_ind" value=""/> <field name="elec_cheque_ind" value=""/> <field name="cheque_amt" value=""/> <field name="cheque_ccy" value=""/> <field name="trxn_date" value="20170110"/> <field name="cheque_bank_code" value=""/> <field name="customer_remark" value=""/> <field name="commercial_bank_name" value=""/> <field name="exch_rate" value=""/> <field name="forex_agree_price_id" value=""/> <field name="start_inst_date" value=""/> <field name="cheque_no" value=""/> <field name="trxn_remark" value=""/><array name="list01" length="1"> <object name=""> <field name="base_exch_rate" value="0.00000"/> <field name="cheque_acct_name" value=""/> <field name="summary_code" value="CSD"/> <field name="forward_cheque_ind" value="N"/> <field name="elec_cheque_ind" value="N"/> <field name="cheque_amt" value="1000.00"/> <field name="cheque_bank_code" value="BOC_MAC"/> <field name="cheque_ccy" value="USD"/> <field name="id" value="1"/> <field name="customer_remark" value=""/> <field name="commercial_bank_name" value=""/> <field name="exch_rate" value="0.00000"/> <field name="forex_agree_price_id" value=""/> <field name="start_inst_date" value="20170110"/> <field name="cheque_no" value="ZSBANK20170001"/> <field name="trxn_remark" value=""/> <field name="cheque_acct_no" value=""/> <field name="collection_check_type" value="FC"/> </object></array><field name="cheque_acct_no" value=""/> <field name="collection_check_type" value=""/> </object><object name="comm_req"> <field name="auto_chrg_info" value=""/> <field name="page_size" value="20"/> <field name="busi_seq" value=""/> <field name="session_id" value=""/> <field name="agent_org_id" value=""/> <field name="recon_code" value=""/> <field name="busi_org_id" value="99"/> <field name="total_count" value=""/> <field name="channel_id" value="101"/> <field name="initiator_date" value="20170110"/> <field name="page_start" value="0"/> <field name="busi_branch_id" value="99101"/> <field name="chrg_confirm_ind" value=""/> <field name="over_time" value=""/> <field name="ip_address" value="10.18.21.27"/> <field name="expect_date" value="20170110"/> <field name="initiator_system" value="100"/> <field name="role_collection" value="ROLE0004,ROLE0007,ROLE0010,@99101"/> <field name="busi_teller_id" value="99101888"/> <field name="sponsor_system" value="100"/> <array name="auth_reason" length="0"/> <field name="auth_ind" value=""/> <field name="auth_user_id" value=""/> <field name="branch_id" value="99101"/> </object><object name="sys"> <field name="prcscd" value="20211"/> <field name="bizSysSrvId" value=""/> </object> </root>""")print (json.dumps(dic,indent=4)) print '----------' print (json.dumps(dic1))
输出:
{"mydocument": {"@has": "an attribute", "and": {"many": ["elements", "more elements"]}, "plus": {"@a": "complex", "#text": "element as well"}} } ------- {"root": {"object": [{"@name": "input", "field": [{"@name": "credit_ccy_code", "@value": "USD"}, {"@name": "credit_acct_no", "@value": "991200001030"}, {"@name": "credit_acct_name", "@value": "Test_PA"}, {"@name": "base_exch_rate", "@value": ""}, {"@name": "cheque_acct_name", "@value": ""}, {"@name": "summary_code", "@value": ""}, {"@name": "forward_cheque_ind", "@value": ""}, {"@name": "elec_cheque_ind", "@value": ""}, {"@name": "cheque_amt", "@value": ""}, {"@name": "cheque_ccy", "@value": ""}, {"@name": "trxn_date", "@value": "20170110"}, {"@name": "cheque_bank_code", "@value": ""}, {"@name": "customer_remark", "@value": ""}, {"@name": "commercial_bank_name", "@value": ""}, {"@name": "exch_rate", "@value": ""}, {"@name": "forex_agree_price_id", "@value": ""}, {"@name": "start_inst_date", "@value": ""}, {"@name": "cheque_no", "@value": ""}, {"@name": "trxn_remark", "@value": ""}, {"@name": "cheque_acct_no", "@value": ""}, {"@name": "collection_check_type", "@value": ""}], "array": {"@name": "list01", "@length": "1", "object": {"@name": "", "field": [{"@name": "base_exch_rate", "@value": "0.00000"}, {"@name": "cheque_acct_name", "@value": ""}, {"@name": "summary_code", "@value": "CSD"}, {"@name": "forward_cheque_ind", "@value": "N"}, {"@name": "elec_cheque_ind", "@value": "N"}, {"@name": "cheque_amt", "@value": "1000.00"}, {"@name": "cheque_bank_code", "@value": "BOC_MAC"}, {"@name": "cheque_ccy", "@value": "USD"}, {"@name": "id", "@value": "1"}, {"@name": "customer_remark", "@value": ""}, {"@name": "commercial_bank_name", "@value": ""}, {"@name": "exch_rate", "@value": "0.00000"}, {"@name": "forex_agree_price_id", "@value": ""}, {"@name": "start_inst_date", "@value": "20170110"}, {"@name": "cheque_no", "@value": "ZSBANK20170001"}, {"@name": "trxn_remark", "@value": ""}, {"@name": "cheque_acct_no", "@value": ""}, {"@name": "collection_check_type", "@value": "FC"}]}}}, {"@name": "comm_req", "field": [{"@name": "auto_chrg_info", "@value": ""}, {"@name": "page_size", "@value": "20"}, {"@name": "busi_seq", "@value": ""}, {"@name": "session_id", "@value": ""}, {"@name": "agent_org_id", "@value": ""}, {"@name": "recon_code", "@value": ""}, {"@name": "busi_org_id", "@value": "99"}, {"@name": "total_count", "@value": ""}, {"@name": "channel_id", "@value": "101"}, {"@name": "initiator_date", "@value": "20170110"}, {"@name": "page_start", "@value": "0"}, {"@name": "busi_branch_id", "@value": "99101"}, {"@name": "chrg_confirm_ind", "@value": ""}, {"@name": "over_time", "@value": ""}, {"@name": "ip_address", "@value": "10.18.21.27"}, {"@name": "expect_date", "@value": "20170110"}, {"@name": "initiator_system", "@value": "100"}, {"@name": "role_collection", "@value": "ROLE0004,ROLE0007,ROLE0010,@99101"}, {"@name": "busi_teller_id", "@value": "99101888"}, {"@name": "sponsor_system", "@value": "100"}, {"@name": "auth_ind", "@value": ""}, {"@name": "auth_user_id", "@value": ""}, {"@name": "branch_id", "@value": "99101"}], "array": {"@name": "auth_reason", "@length": "0"}}, {"@name": "sys", "field": [{"@name": "prcscd", "@value": "20211"}, {"@name": "bizSysSrvId", "@value": ""}]}]}}
2.json转xml
import xmltodictdicts = { "sys":{ "prcscd":"2211", "error_id":1 }, "input":{ "list01":[], "credit_ccy_code":1, "credit_acct_no":1, "credit_acct_name":1, "credit_acct_type":1, "credit_prod_id":1, "act_dept_amt":1, "passbook_no":1, "passbook_balance":1 }, "comm_req":{ "busi_org_id":1, "channel_id":1, "trxn_seq":1, "busi_seq":1, "sponsor_system":1, "initiator_system":1, "initiator_date":1, "recon_code":1, "busi_teller_id":1, "busi_branch_id":1, "expect_date":1, "agent_org_id":1, "session_id":1, "ip_address":1, "over_time":1, "page_size":1, "page_start":1, "total_count":1, "auth_ind":1, "auth_user_id":1, "auto_chrg_method":1, "chrg_confirm_ind":1, "auto_chrg_info":{ "semi_auto_chrg_ind":1, "cash_trxn_ind":1, "chrg_asso_obj_type":1, "cust_no":1, "acct_no":1, "ccy_code":1, "trxn_amt":1, "quantity":1, "deduct_chrg_acct":1, "deduct_chrg_ccy":1, "deduct_sub_acct_seq":1, "summary_code":1, "paid_ind":1, "charge_details":[] }, "role_collection":1, "external_scene_code":1, "warning_confirm_ind":1, "ince_id":1 } }dicts = {'root':dicts} #若没有会报错 Document must have exactly one root print (xmltodict.unparse(dicts,pretty = True))
输出:
<?xml version="1.0" encoding="utf-8"?> <root><sys><error_id>1</error_id><prcscd>2211</prcscd></sys><input><passbook_no>1</passbook_no><credit_acct_type>1</credit_acct_type><act_dept_amt>1</act_dept_amt><passbook_balance>1</passbook_balance><credit_acct_name>1</credit_acct_name><credit_ccy_code>1</credit_ccy_code><credit_acct_no>1</credit_acct_no><credit_prod_id>1</credit_prod_id></input><comm_req><initiator_date>1</initiator_date><trxn_seq>1</trxn_seq><busi_org_id>1</busi_org_id><sponsor_system>1</sponsor_system><warning_confirm_ind>1</warning_confirm_ind><chrg_confirm_ind>1</chrg_confirm_ind><auth_ind>1</auth_ind><role_collection>1</role_collection><auto_chrg_info><summary_code>1</summary_code><cust_no>1</cust_no><ccy_code>1</ccy_code><acct_no>1</acct_no><deduct_chrg_ccy>1</deduct_chrg_ccy><deduct_sub_acct_seq>1</deduct_sub_acct_seq><chrg_asso_obj_type>1</chrg_asso_obj_type><trxn_amt>1</trxn_amt><deduct_chrg_acct>1</deduct_chrg_acct><semi_auto_chrg_ind>1</semi_auto_chrg_ind><paid_ind>1</paid_ind><cash_trxn_ind>1</cash_trxn_ind><quantity>1</quantity></auto_chrg_info><page_size>1</page_size><agent_org_id>1</agent_org_id><expect_date>1</expect_date><page_start>1</page_start><ince_id>1</ince_id><initiator_system>1</initiator_system><over_time>1</over_time><busi_branch_id>1</busi_branch_id><external_scene_code>1</external_scene_code><busi_teller_id>1</busi_teller_id><ip_address>1</ip_address><auth_user_id>1</auth_user_id><recon_code>1</recon_code><total_count>1</total_count><auto_chrg_method>1</auto_chrg_method><session_id>1</session_id><busi_seq>1</busi_seq><channel_id>1</channel_id></comm_req> </root>
转载于:https://www.cnblogs.com/Ryana/p/8022994.html
xml与json格式互转相关推荐
- python json转xml_Python中xml和json格式相互转换操作示例
本文实例讲述了Python中xml和json格式相互转换操作.分享给大家供大家参考,具体如下: Python中xml和json格式是可以互转的,就像json格式转Python字典对象那样. xml格式 ...
- ajax 通过json xml文件,php+Ajax处理xml与json格式数据的方法示例
本文实例讲述了php+Ajax处理xml与json格式数据的方法.分享给大家供大家参考,具体如下: 一.ajax如何处理xml数据格式 register.php 只需修改上一篇<php+Ajax ...
- xml与json互转 C语言实现,通过json-lib、jdom及xom定义XML和JSON格式处理工具类实现xml和json间相互转换...
一.前言 通过json-lib-2.3.jar(jar及pom文件下载).jdom-1.0.jar(jar及pom文件下载).xom-1.0.jar依赖包(jar及pom文件下载)定义JSON和XML ...
- SAP中ABAP格式与JSON格式互转方法研究
一.JSON概念 JSON(JavaScript Object Notation) 是一种轻量级的 数据交换 格式. JSON数据格式示例: { "学生": [ {"姓名 ...
- 【转】ABAP内表数据和JSON格式互转
本程序演示ABAP内表数据如何转为JSON格式, 以及JSON数据如何放入内表. REPORT ZTEST005. DATA : JSON_SER TYPE REF TO CL_TREX_JSON_S ...
- xml转换为json格式时,如何将指定节点转换成数组 Json.NET
使用Json.NET转换xml成json时,如果xml只有单个节点,但json要求是数组形式[], JsonConvert.SerializeXmlNode 并不能自动识别 示例如下: RecordA ...
- ABAP内表数据和JSON格式互转
本程序演示ABAP内表数据如何转为JSON格式,以及JSON数据如何放入内表. 注:json字符串格式如:jsonstr = '[ {flag: "0",message: &quo ...
- Ajax 解释Ajax的XML和JSON格式,操作Ajax的几种封装方法【案例+解释】(二)
文章目录 1.Ajax同步的使用 2.JS的单线程和事件队列 2.Ajax的数据格式 1.XML数据格式 2.JSON数据格式 3.如何处理XML数据格式案例 4.如何处理JSON数据格式案例 3.A ...
- Python21天打卡Day11-dict和json格式互转
import json a={'name':'idoxu','sex':'male','age':30} b=json.dumps(a)#把字典转为json print('{},{}'.format( ...
最新文章
- wpf采用Xps实现文档显示、套打功能
- Android 浏览器 —— 使用 WebView 实现文件下载
- python——迭代器
- React学习资料+css进阶资料总结
- 车险往年保单关联计算的性能优化
- GSAP JS基础教程--动画的控制及事件
- 自己动手写Docker系列 -- 4.3实现volume数据卷
- 创业赚钱 卖货 做项目如何最大化保证成功?
- Vue-watch侦听器和计算属性
- 自制AMD CS5536关机代码和嵌入式
- ASP.NETSpring.NETNHibernate最佳实践(七)——第3章人事子系统(4)人事子系统小结...
- Introduction to Computer Networking学习笔记(十二):Retransmission Strategies重传策略
- 【遗传算法】求解TSP问题
- ORACLE的连接模式——专用服务器和共享服务器
- php 点击电话号码直接拨打,在网站上为手机用户提供”点击拨打电话”功能
- java权限控制是什么_论Java访问权限控制的重要性
- matplotlib交互式数据光标实现——mpldatacursor
- 零基础边缘端智慧交通训练营 | Lesson 4
- fla文件与as文件之间的绑定
- Linux防火墙操作命令,开放或关闭端口
热门文章
- android 开发相机焦距解析之调节远近焦距
- task7a-10个细胞系仅1个表达你的基因
- 轨物范世:华为手机的影像哲学
- getch方法_c语言中getch的用法
- 第43届ACM icpc亚洲区域赛焦作站感想
- 如何创建 “抢占实例” 云服务器BCC?抢占式实例云服务器创建步骤
- DEEPCON: protein contact prediction using dilated convolutional neural networks with dropout
- java 调用弗雷_JAVASE(九)面向对象特性之 : 继承性、方法重写、关键字super、
- antd mobile在微信公众号开发中使用笔记
- cql oracle,执行简单的CQL操作