从GET请求到服务,我收到一个像这样的JSON对象:
{
"id": "SWKJHFDJHSDFLSVNDHLSDKJHNLSDLSDNVLKVSNLK",
"payload": "{ att1: value1, att2: value2}"
}
什么时候应该是这样的:
{
"id": "SWKJHFDJHSDFLSVNDHLSDKJHNLSDLSDNVLKVSNLK",
"payload": { "att1": "value1", "att2": "value2"}
}
问题是有效负载的JSON对象格式不正确,我无法使用JSON.parse()将其转换为真实对象。
如何将"{ att1: value1, att2: value2}"
转换为真正的JavaScript对象?
答案 0 :(得分:1)
如果格式相同,那么您可以使用正则表达式插入如下的语音标记:
"{ att1: value1, att2: value2}".replace(/([a-z0-9]+)/g,"'$1'");
这将在键和字符串中的值周围插入'
。
所以:"{ att1: value1, att2: value2}".replace(/([a-z0-9]+)/g,"\"$1\"");
N.B。您必须考虑输入/ api / json响应值中单个和/或双重标记的可能性。
给出"{ "att1": "value1", "att2": "value2"}"
引号必须是双引号"
才能使json parse正常工作,所以在上面使用json解析会给你你的对象,在一行中它就是
var myObject = JSON.parse("{ att1: value1, att2: value2}".replace(/([a-z0-9]+)/g,"\"$1\""));