首页 新闻 会员 周边 捐助

json对象解析问题

0
悬赏园豆:15 [已解决问题] 解决于 2014-06-08 22:11

如果后台返回的对象中的属性有含有-(破择号等特殊字符的) 解析时会阶段该属性导致错误。

如{id:0,e-mail:b}  这样 eval().e-mail会出错。求解决方案

凌晨四点之洛杉矶的主页 凌晨四点之洛杉矶 | 初学一级 | 园豆:5
提问于:2014-06-05 14:41
< >
分享
最佳答案
0

1.js的变量名中不能包含-,可以将-换成_;

2.{id:0,e-mail:b}中,如果b是个字符串,必须使用单/双引号,b是个变量则不用.

收获园豆:10
xiaoafei1991 | 菜鸟二级 |园豆:466 | 2014-06-08 19:55

你说的是对的,有-的话声明就报语法错误的。

凌晨四点之洛杉矶 | 园豆:5 (初学一级) | 2014-06-08 22:11
其他回答(4)
1

{
"id": 0,
"e-mail": "b"
}

这样写

收获园豆:5
刘宏玺 | 园豆:14020 (专家六级) | 2014-06-05 14:45

可能我的描述有问题。我后台返回的是这样的

{ customeTitleList:[],dataError:["QQ":"xx","E-MAIL":"xxx@xxx.com"],title:["QQ","E-MAIL" }

我怎么解析出dataError里的E-MAIL

我是这样写的

var data= eval("(" + data + ")");

for (var k = 0; k < data.dataError.length; k++) {
                tdHtml += "<tr>";
                for (var j = 0; j < data.title.length; j++) {
                    var result = eval("data.dataError[k]['" + data.title[j].toString()+"']") == null ? '' : eval("data.dataError[k]." + data.title[j].toString());
                    tdHtml += "<td>" + result + "</td>";
                }红色那里因为E-MAIL被截断了会报错。求解答,多谢
                tdHtml += "</tr>";
            }

@文艺吹神: 你现在返回的json还是不对的,所以还是无法解析的

{
    "customeTitleList": {},
    "dataError": {
        "QQ": "xx",
        "E-MAIL": "xxx@xxx.com"
    },
    "title": {
        "QQ": "",
        "E-MAIL": ""
    }
}

换成这样试试

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2014-06-07 13:32
0

json字符串中的字符串是要用双引号包起来的,如果没有包双引号,解析的时候无法识别一个字符串的开始与结束

吴瑞祥 | 园豆:29449 (高人七级) | 2014-06-05 15:41
0

同意一楼!

shengnet | 园豆:31 (初学一级) | 2014-06-05 16:02
0

同意

萌萌,加油 | 园豆:202 (菜鸟二级) | 2014-06-05 17:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册