一个json解析处理的问题 求解决。 ["{1=[{"a":"123456","b":"123"}],2=[{"c":"789","d":"987"}]}"]像这种为什么不能用eval()方法来解析呢?有谁能告诉我用什么 方法 来解析 求解决json 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哪里来的代码,作为 JavaScript 的话,有许多文法错误,当然无法用eval()方法来解析。 你这都不是json格式。1=[{"a":"123456","b":"123"}]有这样子的么?你这样一串用eval("["{1=[{"a":"123456","b":"123"}],2=[{"c":"789","d":"987"}]}"]")返回的是一个数组,然后这个数组里面是个字符串: {1=[{"a":"123456","b":"123"}],2=[{"c":"789","d":"987"}]}吧? 把=号都替换成:吧,JSON字符串里面还真没见过用=号。而且a跟b也要用""包起来。 你的数据不符合任何标准,在 JSP 里,只好自己用java编程解析了。当然了,你的方式可以是,先变换成合格的 json format,然后再调用Java 的 json package. 一个你的字符串错误了,另一个方面为了安全,对json现在不推荐直接eval,要不里有javascript代码也会跟着执行,一般直接调用浏览器提供的json方法,没有这个方法则先用正则表达式等校验过后才调用evel, 现在我已经在后台改了:改成这个样子了:["{"1":[{"username":"1234","tel":"1234567"}],"b":[{"username":"1234","tel":"1234"}]}"] 我要怎么在jsp里解析这个json数据 eval()好像不行啊 你这一串还是错的,你用的是什么语言的后台?基本都有json操作的库的,不用自己拼,自己拼太容易出错了。 "{"1":[{"就这一段就无法解释,两个字符串中间是个1,javascript不认得这个东西。 JSON要么是对象,要么是数组,对象的话就是{"key1": "value1", "key2": "value2"}这样的形式数组的话就是["element1","element2","element3"]这样的形式,当然value,element也可以是对象或者数组。楼主的例子不满足对象也不满足数组,更不满足两者的组合如果后台返回的JSON(稍微改了一下楼主的例子)[{'a':[{"username":"a1234","tel":"1234567"}]},{'b':[{"username":"b1234","tel":"1234"}]}]那这个JSON应该是由一个GET或者POST方法返回的吧$.post('requestPath', function(items){//post成功调用的函数代码//items[0].a[0].username取得a1234//items[0].a[0].tel取得1234567//items[1].b[0].username取得b1234//items[1].b[0].tel取得1234}, 'json') 直接[{ "username":"a1234","tel":"1234567"},{"username":"b1234","tel":"1234"}]就好 现在我又改了,从后台返回的数据是这种格式的,[{b:[{"userName":"爸爸","spell":"baba","tel":"13435265648"}, {"userName":"爸""spell":"baba","tel":"13435265648"}],c:[{"userName":"...","spell":"..","tel":".."},{"userName":"..""spell":"..","tel":"..."}],c:.....}]这种格式在js用var attr = eval(..);alert(attr ); -------这里弹出[object object],这里都已经执行了,就代表var attr = eval(..);也正确了,就代表这是一个json格式的数据了,请问我现在该怎么取出数据?能给出具体的代码吗? var jsonStr = '[{"1":[{"username":"1234","tel":"1234567"}],"b":[{"username":"1234","tel":"1234"}]}]'; var jsonObj = eval("(" + jsonStr + ")"); alert(jsonObj[0]["1"][0]["username"]);你用了太多的json数组,感觉有点混淆json数组和json对象了,这个json字符串是可以简化的。而且eval存在安全隐患,如果IE8以上的话,可以查询一下JSON.parse()和JSON.stringify()的用法 {"b":[{"userName":"爸爸","tel":"123456"},{"userName":"妈妈","tel":"123456"},],"c":[{"userName":"陈总","tel":"123456"},{"userName":"成刚","tel":"123456"},]} {"b": [{"userName":"爸爸","tel":"123456"},{"userName":"妈妈","tel":"123456"},],"c": [{"userName":"陈总","tel":"123456"},{"userName":"成刚","tel":"123456"}]} {"b": [{"userName":"爸爸","tel":"123456"},{"userName":"妈妈","tel":"123456"}],"c": [{"userName":"陈总","tel":"123456"},{"userName":"成刚","tel":"123456"}]}怎么取出数据呢?循环读取 还是js中定义map的问题 求助 批量修改input控件的name 请教:ocx调用javascript固有函数 jquery 获取id问题 toggle window.open全屏不了,救命 求助!这段代码中THIS弄不清楚了 open问题 在HTML文件中可以实现网页包含(include)吗?? 难题!期望速解! 着个特效是为了我爱的人-----娜娜 问个正则表达式的验证 XMLHttpRequest 传送参数中的特殊字符
1=[{"a":"123456","b":"123"}]
有这样子的么?你这样一串用eval("["{1=[{"a":"123456","b":"123"}],2=[{"c":"789","d":"987"}]}"]")
返回的是一个数组,然后这个数组里面是个字符串: {1=[{"a":"123456","b":"123"}],2=[{"c":"789","d":"987"}]}吧?
当然了,你的方式可以是,先变换成合格的 json format,然后再调用Java 的 json package.
["{"1":[{"username":"1234","tel":"1234567"}],"b":[{"username":"1234","tel":"1234"}]}"] 我要怎么在jsp里解析这个json数据 eval()好像不行啊
就这一段就无法解释,两个字符串中间是个1,javascript不认得这个东西。
数组的话就是["element1","element2","element3"]这样的形式,当然value,element也可以是对象或者数组。
楼主的例子不满足对象也不满足数组,更不满足两者的组合如果后台返回的JSON(稍微改了一下楼主的例子)
[{'a':[{"username":"a1234","tel":"1234567"}]},{'b':[{"username":"b1234","tel":"1234"}]}]
那这个JSON应该是由一个GET或者POST方法返回的吧
$.post('requestPath', function(items){
//post成功调用的函数代码
//items[0].a[0].username取得a1234
//items[0].a[0].tel取得1234567
//items[1].b[0].username取得b1234
//items[1].b[0].tel取得1234
}, 'json')
[{
"username":"a1234","tel":"1234567"},
{"username":"b1234","tel":"1234"}]就好
[{
b:[{"userName":"爸爸","spell":"baba","tel":"13435265648"}, {"userName":"爸""spell":"baba","tel":"13435265648"}],
c:[{"userName":"...","spell":"..","tel":".."},
{"userName":"..""spell":"..","tel":"..."}],
c:.....
}
]
这种格式在js用var attr = eval(..);
alert(attr ); -------这里弹出[object object],这里都已经执行了,就代表var attr = eval(..);也正确了,就代表这是一个json格式的数据了,请问我现在该怎么取出数据?能给出具体的代码吗?
var jsonStr = '[{"1":[{"username":"1234","tel":"1234567"}],"b":[{"username":"1234","tel":"1234"}]}]';
var jsonObj = eval("(" + jsonStr + ")");
alert(jsonObj[0]["1"][0]["username"]);你用了太多的json数组,感觉有点混淆json数组和json对象了,这个json字符串是可以简化的。而且eval存在安全隐患,如果IE8以上的话,可以查询一下JSON.parse()和JSON.stringify()的用法
{
"b":
[
{"userName":"爸爸","tel":"123456"},{"userName":"妈妈","tel":"123456"},
],
"c":
[
{"userName":"陈总","tel":"123456"},{"userName":"成刚","tel":"123456"},
]
}
{
"b":
[{"userName":"爸爸","tel":"123456"},{"userName":"妈妈","tel":"123456"},],
"c":
[{"userName":"陈总","tel":"123456"},{"userName":"成刚","tel":"123456"}]
}
"b":
[{"userName":"爸爸","tel":"123456"},{"userName":"妈妈","tel":"123456"}],
"c":
[{"userName":"陈总","tel":"123456"},{"userName":"成刚","tel":"123456"}]
}
怎么取出数据呢?循环读取