["{1=[{"a":"123456","b":"123"}],2=[{"c":"789","d":"987"}]}"]
像这种为什么不能用eval()方法来解析呢?
有谁能告诉我用什么 方法 来解析  求解决json

解决方案 »

  1.   

    哪里来的代码,作为 JavaScript 的话,有许多文法错误,当然无法用eval()方法来解析。
      

  2.   

    你这都不是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"}]}吧?
      

  3.   

    把=号都替换成:吧,JSON字符串里面还真没见过用=号。而且a跟b也要用""包起来。
      

  4.   

    你的数据不符合任何标准,在 JSP 里,只好自己用java编程解析了。
    当然了,你的方式可以是,先变换成合格的 json format,然后再调用Java 的 json package.
      

  5.   

    一个你的字符串错误了,另一个方面为了安全,对json现在不推荐直接eval,要不里有javascript代码也会跟着执行,一般直接调用浏览器提供的json方法,没有这个方法则先用正则表达式等校验过后才调用evel,
      

  6.   

    现在我已经在后台改了:改成这个样子了:
    ["{"1":[{"username":"1234","tel":"1234567"}],"b":[{"username":"1234","tel":"1234"}]}"]  我要怎么在jsp里解析这个json数据    eval()好像不行啊
      

  7.   

    你这一串还是错的,你用的是什么语言的后台?基本都有json操作的库的,不用自己拼,自己拼太容易出错了。
      

  8.   

    "{"1":[{"
    就这一段就无法解释,两个字符串中间是个1,javascript不认得这个东西。
      

  9.   

    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')
      

  10.   

    直接
    [{
        "username":"a1234","tel":"1234567"},
    {"username":"b1234","tel":"1234"}]就好
      

  11.   

    现在我又改了,从后台返回的数据是这种格式的,
    [{
    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格式的数据了,请问我现在该怎么取出数据?能给出具体的代码吗?
      

  12.   


    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()的用法
      

  13.   


    {
    "b":
    [
    {"userName":"爸爸","tel":"123456"},{"userName":"妈妈","tel":"123456"},
    ],
    "c":
    [
    {"userName":"陈总","tel":"123456"},{"userName":"成刚","tel":"123456"},
    ]
    }
      

  14.   


    {
    "b":
      [{"userName":"爸爸","tel":"123456"},{"userName":"妈妈","tel":"123456"},],
    "c":
      [{"userName":"陈总","tel":"123456"},{"userName":"成刚","tel":"123456"}]
      

  15.   

    {
    "b":
      [{"userName":"爸爸","tel":"123456"},{"userName":"妈妈","tel":"123456"}],
    "c":
      [{"userName":"陈总","tel":"123456"},{"userName":"成刚","tel":"123456"}]
    }
    怎么取出数据呢?循环读取