将字符串转换成JSON对象,搜集到两种可行方法,整理下,留以后备用,一种是
传统的Eval动态执行的方式进行创建,一种是使用Jquery进行转换。
为了测试,准备两组字符串如下:
var strFor_Eval = '{name:"张三",age:"20",Address:[{Home:"家庭地址1",Company:"公司地址1"},{Home:"家庭地址2",Company:"公司地址2"}]}';
var strFor_parseJSON = '{"name":"张三","age":20,"Address":[{"Home":"家庭地址1","Company":"公司地址1"},{"Home":"家庭地址2","Company":"公司地址2"}]}'; 两组字符串均是符合JSON的组建规则。不同的是,第二组字符串中的键和第一组中的不同。
多了一对双引号。这就是Jquery和Eval在JSON格式上要求的区别。
以下为测试的时候用的代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>将字符串转换成JSON对象的两种可行方法</title>
<script src="jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
var jsonObj = null;
/*上面准备的两组字符串*/
var strFor_Eval = '{name:"张三",age:"20",Address:[{Home:"家庭地址1",Company:"公司地址1"},{Home:"家庭地址2",Company:"公司地址2"}]}';
var strFor_parseJSON = '{"name":"张三","age":20,"Address":[{"Home":"家庭地址1","Company":"公司地址1"},{"Home":"家庭地址2","Company":"公司地址2"}]}'; /*$.parseJSON(data)*/
/*
使用JQ进行转换时,键必须使用双引号进行包装,非数值类型(整型,浮点)的,
也需要使用双引号进行包装.
如果值为日期类型,不使用双引号进行包装时,会转换成年部分.
*/
var showResult = function(type)
{
switch (type) {
case "eval":
//return;
jsonObj = eval('(' + strFor_Eval + ')');
break;
case "jq":
jsonObj = $.parseJSON(strFor_parseJSON);
break;
}
var str = type + '方式,转换结果如下:' + '
' +
'姓名:' + jsonObj.name + '
' +
'年龄:' + jsonObj.age + '
' +
'家庭地址(1):' + jsonObj.Address[0].Home + '
' +
'公司地址(1):' + jsonObj.Address[0].Company + '
' +
'家庭地址(2):' + jsonObj.Address[1].Home + '
' +
'公司地址(2):' + jsonObj.Address[1].Company + '
';
alert(str);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" value="Show" onclick="showResult('eval');" />
</div>
</form>
</body>
</html>