我从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。
答案 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.txt
为string
,您只需要解析它。如果它是object
,您将stringify
然后parse
将其转换为字符串