我有一个作为json返回的cookie,但是可以';你没有得到价值吗?
我有这个饼干我有一个作为json返回的cookie,但是可以';你没有得到价值吗?,json,angularjs,cookies,Json,Angularjs,Cookies,我有这个饼干 {"__ngDebug":"true","userdata":"j:{\"id\":10099,\"username\":\"somename@gmail.com\",\"email\":\"somename@gmail.com\",\"role\":\"candidate\"}"} 如果我做cookie.userdata,我会得到 "j:{\"id\":10099,\"username\":\"somename@gmail.com\",\"email\":\"somename
{"__ngDebug":"true","userdata":"j:{\"id\":10099,\"username\":\"somename@gmail.com\",\"email\":\"somename@gmail.com\",\"role\":\"candidate\"}"}
如果我做cookie.userdata,我会得到
"j:{\"id\":10099,\"username\":\"somename@gmail.com\",\"email\":\"somename@gmail.com\",\"role\":\"candidate\"}"
如果我做了cookie.userdata.j
我什么也得不到。要获取电子邮件、用户名和角色,我必须做些什么?问题
这是因为cookie.userdata
的结果是字符串
而不是对象
不幸的是,您无法使用JSON.parse将结果直接解析为JSON,因为userdata
的值不是有效的JSON(它是对象语法,没有包装在{
和}
中,并且j
需要包装在“
中)
最佳方法:在源代码处修复输入
要解决这个问题,您需要重新格式化您的输入字符串,如果可能的话
{"__ngDebug":"true","userdata":{"j":{"id":10099,"username":"somename@gmail.com","email":"somename@gmail.com","role":"candidate"}}}
注:我将{
和}
添加到userdata
的开头和结尾,并将j
包装在“
中。此外,我还删除了\
和用户数据值周围的和“
,因为我们希望它是对象
而不是字符串
这样做,您应该能够像这样获得cookie.userdata.j
的值
如果出于某种原因必须将j
作为字符串
,这也会起作用
{"__ngDebug":"true","userdata":"{\"j\":{\"id\":10099,\"username\":\"somename@gmail.com\",\"email\":\"somename@gmail.com\",\"role\":\"candidate\"}}"}
注:我将{
和}
添加到userdata
的开头和结尾,并将j
包装到“
然后您应该能够通过JSON.parse(cookie.userdata).j获得它
不是很好的方法,但它是有效的
如果由于某种原因无法在源代码处修复输入,可以对cookie.userdata
string
进行一些修改,使其成为有效的JSON,然后对其使用JSON.parse
假设cookie.userdata
产生以下结果
"j:{\"id\":10099,\"username\":\"somename@gmail.com\",\"email\":\"somename@gmail.com\",\"role\":\"candidate\"}"
然后可以执行以下操作将其强制为有效对象
val = cookie.userdata
objVal = JSON.parse('{' + val.replace('j:', '"j":') + '}')
j = objVal.j
我在这里做的是添加JSON对象分隔符{
和}
,并将j
包装到“
,这是JSON标准所要求的
结论
使用上述任何一种方法,在对象中拥有j
后,只需获取用户名
、电子邮件
和角色
j.username => "somename@gmail.com"
j.email => "somename@gmail.com"
j.role => "candidate"
问题
这是因为cookie.userdata
的结果是字符串
而不是对象
不幸的是,您无法使用JSON.parse将结果直接解析为JSON,因为userdata
的值不是有效的JSON(它是对象语法,没有包装在{
和}
中,并且j
需要包装在“
中)
最佳方法:在源代码处修复输入
要解决这个问题,您需要重新格式化您的输入字符串,如果可能的话
{"__ngDebug":"true","userdata":{"j":{"id":10099,"username":"somename@gmail.com","email":"somename@gmail.com","role":"candidate"}}}
注:我将{
和}
添加到userdata
的开头和结尾,并将j
包装在“
中。此外,我还删除了\
和userdata
值周围的”
,因为我们希望它是对象,而不是字符串
这样做,您应该能够像这样获得cookie.userdata.j
的值
如果出于某种原因必须将j
作为字符串
,这也会起作用
{"__ngDebug":"true","userdata":"{\"j\":{\"id\":10099,\"username\":\"somename@gmail.com\",\"email\":\"somename@gmail.com\",\"role\":\"candidate\"}}"}
注:我将{
和}
添加到userdata
的开头和结尾,并将j
包装到“
然后您应该能够通过JSON.parse(cookie.userdata).j获得它
不是很好的方法,但它是有效的
如果由于某种原因无法在源代码处修复输入,可以对cookie.userdata
string
进行一些修改,使其成为有效的JSON,然后对其使用JSON.parse
假设cookie.userdata
产生以下结果
"j:{\"id\":10099,\"username\":\"somename@gmail.com\",\"email\":\"somename@gmail.com\",\"role\":\"candidate\"}"
然后可以执行以下操作将其强制为有效对象
val = cookie.userdata
objVal = JSON.parse('{' + val.replace('j:', '"j":') + '}')
j = objVal.j
我在这里做的是添加JSON对象分隔符{
和}
,并将j
包装到“
,这是JSON标准所要求的
结论
使用上述任何一种方法,在对象中拥有j
后,只需获取用户名
、电子邮件
和角色
j.username => "somename@gmail.com"
j.email => "somename@gmail.com"
j.role => "candidate"
问题
这是因为cookie.userdata
的结果是字符串
而不是对象
不幸的是,您无法使用JSON.parse将结果直接解析为JSON,因为userdata
的值不是有效的JSON(它是对象语法,没有包装在{
和}
中,并且j
需要包装在“
中)
最佳方法:在源代码处修复输入
要解决这个问题,您需要重新格式化您的输入字符串,如果可能的话
{"__ngDebug":"true","userdata":{"j":{"id":10099,"username":"somename@gmail.com","email":"somename@gmail.com","role":"candidate"}}}
注:我将{
和}
添加到userdata
的开头和结尾,并将j
包装在“
中。此外,我还删除了\
和用户数据值周围的和“
,因为我们希望它是对象
而不是字符串
这样做,您应该能够像这样获得cookie.userdata.j
的值
如果出于某种原因必须将j
作为字符串
,这也会起作用
{"__ngDebug":"true","userdata":"{\"j\":{\"id\":10099,\"username\":\"somename@gmail.com\",\"email\":\"somename@gmail.com\",\"role\":\"candidate\"}}"}
注:我将{
和}
添加到userdata
的开头和结尾,并将j
包装到“
然后您应该能够通过JSON.parse(cookie.userdata).j获得它
不是很好的方法,但它是有效的
如果由于某种原因无法在源代码处修复输入,可以对cookie.userdata
string
进行一些修改,使其成为有效的JSON,然后在上使用JSON.parse