Javascript 无法在JSON上使用点表示法

Javascript 无法在JSON上使用点表示法,javascript,json,Javascript,Json,我有一个这样的函数 data = JSON.parse(data) "{\"content\":\"Hello there\",\"uid\":\"OoIEfsgabT89EJw\",\"createdAt\":1451586225268,\"user\":{\"avatar\":\"https://avatars.com/123?v=3\",\"login\":\"login\",\"name\":\"Username\",\"uid\":123}}"� 其中data是第一个字符串,如下所

我有一个这样的函数

data = JSON.parse(data)
"{\"content\":\"Hello there\",\"uid\":\"OoIEfsgabT89EJw\",\"createdAt\":1451586225268,\"user\":{\"avatar\":\"https://avatars.com/123?v=3\",\"login\":\"login\",\"name\":\"Username\",\"uid\":123}}"�
其中
data
是第一个字符串,如下所示

data = JSON.parse(data)
"{\"content\":\"Hello there\",\"uid\":\"OoIEfsgabT89EJw\",\"createdAt\":1451586225268,\"user\":{\"avatar\":\"https://avatars.com/123?v=3\",\"login\":\"login\",\"name\":\"Username\",\"uid\":123}}"�
而数据转换现在已经完成

{"content":"Hello there","uid":"OoIEfsgabT89EJw","createdAt":1451586225268,"user":{"avatar":"https://avatars.com/126?v=3","login":"login","name":"Username","uid":123}}
当我试图访问
data.uid
时,我看到
未定义
。我做错了什么

编辑:代码

addItem: function(data) {
  data = JSON.parse(data)

  console.log("Adding: "+data)
  console.log("Adding: "+data.uid)
},
edit2:JSON是双重编码的。

执行两次
data=JSON.parse(data)
解决了这个问题,但这是完全错误的。我还能做什么?

如果在开头和结尾使用双引号
,将创建一个字符串变量而不是JSON,那么应该直接使用它

工作示例:

var data={“content”:“你好”,“uid”:“OoIEfsgabT89EJw”,“createdAt”:1451586225268,“user”:{“avatar”:”https://avatars.com/126?v=3“,”登录“:”登录“,”姓名“:”用户名“,”uid“:”123};

console.log(data.uid);//OoIEfsgabT89EJw
猜测您的JSON实际上是双重编码的。如果您这样做,它会工作吗?
data=JSON.parse(JSON.parse(data))
是的,你是对的。刚刚编辑了这个问题,然后答案是在服务器上修复它。如果它被编码两次,就会出现问题。我向前端发送了一个JSON字符串…我看不出应该在服务器上修复什么。似乎前端正在重新解析。是的,在不知道更多细节的情况下确实帮不上忙,但问题是doesn不涉及JavaScript端。一旦你解决了编码问题,你在那里做的是正确的。如果他使用JSON,数据很可能不是来自程序内部。事实上,如果程序中是字符串,那么它就是JSON。你所说的“如果是字符串,那么它就是JSON”?因为JSON是UTF编码的文本,并且是唯一的方式在JavaScript程序中表示UTF文本是通过使用字符串。我认为您可能误解了JSON的用途。您的第二个示例现在显示了存储在
data
变量中的JSON数据。如果您再次查看问题,他正在使用
JSON.parse()解析它
,所以它应该可以工作。但是,像这样直接在JavaScript程序中嵌入JSON数据是非常不寻常的。好的,我看到OP已经更新,并且在更新中刚刚添加了
JSON.parse()