Ajax 对json数据使用eval()

Ajax 对json数据使用eval(),ajax,django,json,eval,Ajax,Django,Json,Eval,我试图在json格式的数据集上使用eval来检索属性值,即 [{"item_one":1, "item_two": 2, "item_three": 3}] 我在django中使用dajax进行ajax调用,如下所示: @dajaxice_register def get_current_id(request): home_timeline = oauth_req( 'http://api.twitter.com/1/statuses/home_timeline.json?co

我试图在json格式的数据集上使用eval来检索属性值,即

[{"item_one":1, "item_two": 2, "item_three": 3}]
我在django中使用dajax进行ajax调用,如下所示:

@dajaxice_register
def get_current_id(request):
    home_timeline = oauth_req(
    'http://api.twitter.com/1/statuses/home_timeline.json?count=1',
    settings.TWITTER_TOKEN_KEY,
    settings.TWITTER_TOKEN_SECRET
    )
    return simplejson.dumps({'home_timeline': home_timeline })
它在回调时获取以下内容:

function get_current_id_callback(data){
      if(data==Dajaxice.EXCEPTION){
        alert('Error! Something happens!');
      }
      else{
        console.log(data.home_timeline);
      }
    }
我不明白为什么这会给我不明确的印象:

console.log(eval(data.home_timeline.item_one))
什么是正确的方法来检索项目1的值


谢谢。

如果
数据
仍然是一个字符串,那么您需要
eval(data)
(或者按照@cHao的建议,解析它)来生成一个能够被取消引用的javascript对象


如果它不仅仅是一个字符串,就不应该首先求值。

退出该操作。现在常用的每种语言都有一个内置的或随时可用的JSON解析器。尤其是Javascript。查看
JSON.parse
。它比
eval
更安全、更高效。您的框架甚至可能已经在为您做这件事了。@cHao,使用JSON.parse仍然不能正确地解析
data.home\u timeline.item\u one
给出了:
Uncaught SyntaxError:Unexpected token u get\u current\u id\u callback:8000/:64
,即:
console.log(JSON.parse(data.home\u timeline.id\u str))谢谢。当你说
console.log(data)
(或者可能是
console.log(data.home\u timeline)
)时,这会给你什么?这会给我json输出。然后
json.parse
会给你json表示的对象,如果它是有效的json.eval和json.parse在迭代对象时都起作用,它包含一个索引-不必迭代一个索引。这是有效的:
$.each(eval(data.home_timeline)、函数(i,item){console.log(item.id_str);}),这同样有效:
$.each(JSON.parse(data.home_timeline)、函数(i,item){console.log(item.id_str);})。那么,为什么没有
$each()
,它就不能工作呢?谢谢,我想好了:
parsed=JSON.parse(data.home\u timeline);console.log(已解析[0].id\u str)