JSON对象转换成字符串 相互转换 的几种方式

在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用request进行接收。有时传递了几个数值,还好接收。但是如果传递一个json数组,这样后台接受的时候Request多个很麻烦,此时要按照类的格式或者 集合的形式进行传递。例如下面的例子:

前台按类的格式传递JSON对象:

var jsonUserInfo = “{\”TUserName\”:\”” + userName + “\”,\”TInterest\”:\”” + interest + “\”,\”TSex\”:\”” + sex + “\”,\”TCity\”:\”” + city + “\”,\”TDetail\”:\”” + detail + “\”}”;如拼出的jsonUserInfo 无转义符号,需要var jsonArrayFinal = JSON.stringify(jsonArray);进行转换后再传递

$.ajax(  
                    {  
                        type: "post",  
                        url: "ReceiveHandler1.ashx",  
                        data: { userInfo: jsonUserInfo, flag: "123456", key: "654321" },  
                        dataType: "JSON",  
                        success: function(data) {  
                            $("#divShow").html(data);  
                        }  
 });  

这是简单的传递,如果传递多个数组,前台传递多个类格式的JSON数组,也就是集合类型。后台处理就比较麻烦,例如:
[{“name”:”a”},{“name”,”b”},{“name”,”c”}],则无法传递,此时必须使用JSON.stringify将数组对象转换成字符串,再进行AJAX传递即可。
例如:两个参数变量,一个是字符串,一个是数组。
var a={“name”:”tom”,”sex”:”男”,”age”:”24”};
var b=’{“name”:”Mike”,”sex”:”女”,”age”:”29”}’;
在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法。
JSON.stringify(obj)将JSON转为字符串。JSON.parse(string)将字符串转为JSON格式;
在转换成一般使用了两种方式,一个是JSON.stringify(obj),转换成字符串,JSON.parse(string)将字符串转为JSON格式,不过一个一个json.js的支持。不过在许多的浏览器现在都支持,可以直接使用。

上面的转换可以这么写:

var a={"name":"tom","sex":"男","age":"24"};   
var b='{"name":"Mike","sex":"女","age":"29"}';   
var aToStr=JSON.stringify(a);   
var bToObj=JSON.parse(b);   
alert(typeof(aToStr));  //string   
alert(typeof(bToObj));//object  
JSON.stringify()  

ie8(兼容模式),ie7和ie6没有JSON对象,不过http://www.json.org/js.html提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;你可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。
ie8(兼容模式),ie7和ie6可以使用eval()将字符串转为JSON对象,
var c=’{“name”:”Mike”,”sex”:”女”,”age”:”29”}’;
var cToObj=eval(“(“+c+”)”);
alert(typeof(cToObj));
jQuery中也有将字符串转为JSON格式的方法jquery.parseJSON( json ),接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript (JSON)对象。当然如果有兴趣可以自己封装一个jQuery扩展,jQuery.stringifyJSON(obj)将JSON转为字符串。
这只是一种方法,还有几种方法,大家可以看一下:
1>jQuery插件支持的转换方式:

$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象
2>浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:
JSON.parse(jsonstr); //可以将json字符串转换成json对象
JSON.stringify(jsonobj); //可以将json对象转换成json对符串
注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。

3>javascript支持的转换方式:
eval(‘(’ + jsonstr + ‘)’); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号
注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。

4>JSON官方的转换方式:
http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;
可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。

### 回答1: 可以使用解析库或者某些工具将XML字符串转换JSON格式。 例如,在Python,可以使用第三方库xmltodict,使用方法如下: ``` import xmltodict xml_string = """ <root> <person> <name>John Doe</name> <age>23</age> </person> </root> """ json_data = xmltodict.parse(xml_string) print(json.dumps(json_data, indent=4)) ``` 输出: ``` { "root": { "person": { "name": "John Doe", "age": "23" } } } ``` 除了使用第三方库,也可以使用其他语言内置的工具来完成转换,例如Java可以使用Jackson库等。 ### 回答2: 将XML字符串转换JSON可以通过以下几个步骤完成: 1. 解析XML字符串:使用XML解析器将XML字符串解析为XML文档对象。常用的解析器包括DOM解析器和SAX解析器。 2. 遍历XML文档对象:遍历XML文档对象,获取节点的名称、属性、子节点以及文本内容等信息。 3. 构建JSON对象:根据节点的信息,构建对应的JSON对象。节点名称作为JSON对象的键,节点的属性和文本内容作为对应键的值。如果节点有子节点,递归处理子节点。 4. 输出JSON字符串:将构建好的JSON对象转换JSON字符串。可以使用JSON库提供的方法将JSON对象序列化为字符串。 以下是一个示例代码,演示了如何将XML字符串转换JSON: ```python import json from xml.dom import minidom def xml_to_json(xml_str): # 解析XML字符串 xmldoc = minidom.parseString(xml_str) # 获取XML根节点 root_node = xmldoc.documentElement # 构建JSON对象 json_obj = {} if root_node.hasChildNodes(): for node in root_node.childNodes: # 忽略文本节点 if node.nodeType != node.TEXT_NODE: # 获取节点名称 node_name = node.nodeName # 初始化节点值 node_value = None # 如果节点有子节点,递归处理子节点 if node.hasChildNodes(): node_value = xml_to_json(node.toxml()) else: # 获取节点文本内容 node_value = node.firstChild.nodeValue # 构建JSON对象 if node_name not in json_obj.keys(): json_obj[node_name] = node_value else: # 如果节点名称已经存在,将其转换为数组 if type(json_obj[node_name]) is list: json_obj[node_name].append(node_value) else: json_obj[node_name] = [json_obj[node_name], node_value] return json_obj # 示例XML字符串 xml_string = ''' <root> <name>张三</name> <age>25</age> <gender>男</gender> <address> <city>北京</city> <street>朝阳区</street> </address> <interests> <interest>篮球</interest> <interest>读书</interest> </interests> </root> ''' # 将XML转换JSON json_data = xml_to_json(xml_string) # 将JSON转换字符串 json_string = json.dumps(json_data) print(json_string) ``` 以上代码将输出如下JSON字符串: ```json {"root": {"name": "张三", "age": "25", "gender": "男", "address": {"city": "北京", "street": "朝阳区"}, "interests": {"interest": ["篮球", "读书"]}}} ``` 这样就完成了将XML字符串转换JSON的过程。 ### 回答3: 将XML字符串转换JSON有多种方法,以下是一种常用的方法: 首先,需要将XML字符串解析为XML文档对象。可以使用Python的xml.etree.ElementTree库来完成解析操作。具体步骤如下: 1. 导入xml.etree.ElementTree模块和json模块。 ```python import xml.etree.ElementTree as ET import json ``` 2. 使用ElementTree的parse函数将XML字符串解析为XML文档对象。 ```python xml_str = "<root><name>John</name><age>25</age></root>" xml_doc = ET.fromstring(xml_str) ``` 3. 创建一个空的字典用于存储转换后的JSON数据。 ```python json_data = {} ``` 4. 遍历XML文档对象的子元素,将其转换JSON键值对,并添加到字典。 ```python for element in xml_doc: json_data[element.tag] = element.text ``` 5. 使用json模块的dumps函数将字典转换JSON字符串。 ```python json_str = json.dumps(json_data) ``` 最后,得到转换后的JSON字符串,可以对其进行打印或其他操作。 ```python print(json_str) ``` 以上方法可以将简单的XML字符串转换JSON,如果XML结构更复杂则需要进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值