var t="{'firstName': 'cyra', 'lastName': 'richardson', 'address': { 'streetAddress': '1 Microsoft way', 'city': 'Redmond', 'state': 'WA', 'postalCode': 98052 },'phoneNumbers': [ '425-777-7777','206-777-7777' ] }";
    var jsonobj=eval('('+t+')');//通过eval() 函数可以将JSON字符串转化为对象
    alert(jsonobj.firstName);
    alert(jsonobj.lastName);
    alert(jsonobj.address.streetAddress);

解决方案 »

  1.   

    ajax请求返回的数据是字符串的类型。。json是Object对象,所以需要用eval对你的返回值运行一下生成一个object。
    注:objcet对象需要小括号将字符串包住。
    var backStr = '{"urls":[
    {"result":true,"url_short":"http://t.cn/zWCJpzQ","url_long":"http://judge.sinaapp.com/honor.php?h=60933&a=ytNdr3LtC","type":0}
    ]}'
    eval('('+backStr+')')
      

  2.   

    楼上两位,请仔细看一下,我用的是JQery的getJSON方法,此时的data就是一个JSON对象,我用alert(data),显示的是Object Object也可以证明这一点。我的问题不是如何获取JSON对象,而是怎么获取JSON数据中key对应的value值
      

  3.   

    alert(data.urls[0].url_long);
    不需要使用eval。
      

  4.   

    我之前也是这样用的,可是为什么Chrome会报错呢?
    Uncaught TypeError: Cannot read property '0' of undefined 
      

  5.   

    Uncaught TypeError: Cannot read property '0' of undefined
    报错是因为你把键名写错了,json对象中的键是urls,你写成了url,低级错误。
      

  6.   


    console.log(JSON.stringify(data)); //把JSON字符串发上来看看
      

  7.   

    {"code":1,"data":{"urls":[{"result":true,"url_short":"http://t.cn/zWCJpzQ","url_long":"http://judge.sinaapp.com/honor.php?h=60933&a=ytNdr3LtC","type":0}]}} 
      

  8.   


    alert(data.data.urls[0].url_long);