在JavaScript中将错误的字符串格式对象转换为实际对象

时间:2015-07-03 13:59:29

标签: javascript json

从GET请求到服务,我收到一个像这样的JSON对象:

{
  "id": "SWKJHFDJHSDFLSVNDHLSDKJHNLSDLSDNVLKVSNLK",
  "payload": "{ att1: value1, att2: value2}"
}

什么时候应该是这样的:

{
  "id": "SWKJHFDJHSDFLSVNDHLSDKJHNLSDLSDNVLKVSNLK",
  "payload": { "att1": "value1", "att2": "value2"}
}

问题是有效负载的JSON对象格式不正确,我无法使用JSON.parse()将其转换为真实对象。

如何将"{ att1: value1, att2: value2}"转换为真正的JavaScript对象?

1 个答案:

答案 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\""));