将字符串转换成JSON对象(两种实现方法)

来源:luqidong 发布时间:2013-08-20 19:29:04 点击数:
将字符串转换成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>