为什么我不能通过JavaScript中的键访问JSON对象?

时间:2011-09-22 02:06:05

标签: javascript json node.js

这是我的JSON对象:

{ text: 'stuff',
  user: 'user1
}

当我运行typeof jsonObj时,我得到object。当我运行jsonOb.length时,我得到了未定义。当我尝试通过text访问console.log(jsonObj.text)属性时,我得到了未定义。

那么如何才能正确访问JavaScript中的所有内容?

我不想使用jQuery,因为这是所有node.js编程所以它是服务器端。

更新 - 完整的JSON

{ text: '@junk_666 おかえりか',
  user: 
   { display_name: 'mono',
     screen_name: 'monochrm',
     klout_score: null,
     location_str: '画面の前',
     utc_offset: '32400' },
  venue_id: 1304409836517,
  match_type: 'twitter',
  tweet_id: '116494264137023489',
  created_at_unix: 1316609371,
  meta: 
   { matchedPhrase: 'junk',
     venueName: 'deletemepls really long name' },
  tags: [ '' ],
  indexed_at_unix: 1316609416 }

4 个答案:

答案 0 :(得分:1)

json似乎无效

{
    "text": "stuff",
    "user": "user1"
}

答案 1 :(得分:1)

我将您的对象复制并粘贴到FireBug控制台中,然后识别出来。

如果需要计算键/值对的数量,可以使用这样的函数来执行此操作:

function numMembers(o) {
    var i=0;
    for (a in o) {
        i++;
    }
    return i;
}

您应该能够通过jsonObj.text访问text属性的值。你确定你的对象被jsonObj引用了吗?另外,您是否可以访问更简单对象的值,例如创建它们时在其他帖子中提到的值?此外,如果您只使用ASCII字符,有什么用处吗?出于某种原因,它可能无法正确处理一些非拉丁字符。

答案 2 :(得分:1)

首先,你拥有的不是JSON,因为JSON要求属性名称是双引号。它是一个有效的JavaScript对象文字,所以我假设你正在使用它。

其次,JavaScript对象通常没有length属性。阵列。

您的对象文字没有问题,因此代码中的其他地方一定存在其他问题。

答案 3 :(得分:0)

试试这个:

{ text: 'stuff',
  user: 'user1'
}
你离开了撇号。

现在您已经发布了完整的JS代码(这不是JSON,正如@josnidhin指出的那样)...在jsFiddle中正常工作。 http://jsfiddle.net/Rs9R4/我不相信JS对象有.length,只有Arrays。