无法访问json对象属性返回undefined

时间:2016-08-01 16:52:54

标签: javascript json

我从json对象访问一个键,但它返回undefined

{"body":"Hi","date":"2016-07-29 07:43:00"}

var a = JSON.parse(JSON.stringify(r.txt));
console.log(a.body)

//undefined

r的值是

{
  username: '1',
  txt: '{"body":"Hi","date":"2016-07-29 07:43:00"}',
 }

我尝试过使用stringify,然后解析为json,但仍然返回undefined。

3 个答案:

答案 0 :(得分:3)

您要像这样解析json。确保您向JSON.parse提供的任何输入都应该是一个字符串。

您可以运行以下代码段以确保其有效并提供输出Hi



var json = '{"body":"Hi","date":"2016-07-29 07:43:00"}';

var a = JSON.parse(json);
document.write(a.body);




答案 1 :(得分:3)

在你的代码中,字符串化的结果将是library(data.table) setDT(df)[, ConsecNoshows := ifelse(Noshow == 0, 0, cumsum(Noshow)), .(PatientID, rleid(Noshow))] df # PatientID Noshow ConsecNoshows # 1: 1 0 0 # 2: 1 1 1 # 3: 1 0 0 # 4: 1 1 1 # 5: 1 1 2 # 6: 1 1 3 # 7: 2 0 0 # 8: 2 0 0 # 9: 2 1 1 #10: 2 1 2 #11: 2 0 0 #12: 2 1 1 (这是JSON中的有效字符串表示),解析它将再次提供字符串作为结果而不是对象。当您尝试获取"\"{\"body\":\"Hi\",\"date\":\"2016-07-29 07:43:00\"}\""字符串的属性body时,因为字符串没有undefined之类的属性。

因此无需再次对JSON字符串进行字符串化,只需避免使用stringify方法即可。

body

答案 2 :(得分:1)

你必须删除r.txt中的单引号,它应该可以工作

以下是我更新的代码:

var r = {
  username: '1',
  txt: {"body":"Hi","date":"2016-07-29 07:43:00"},
 };

var a = JSON.parse(JSON.stringify(r.txt));
console.log(a.body)

如果r.txtstring,您只需要解析它。如果它是object,您将stringify然后parse将其转换为字符串