如何将以下内容转换为有效的 JSON?
How do I convert the following to a valid JSON?
给出
var test = '{key1: "val1", data:{ key2: "val2", key3: "val3" }}' => returned by third party library
expectedOutput = {key1: "val1", data:{ key2: "val2", key3: "val3" }}
我试过 JSON.parse(test) => 抛出错误
我试过 JSON.parse(JSON.stringify(test)) => returns 字符串双解析结果错误。
我错过了什么?
如何通过解析得到 JSON 而不是字符串?
您可能需要引用您的密钥:
var test = '{"key1": "val1", "data":{ "key2": "val2", "key3": "val3" }}'
除了许多 JSON 解析器之外,并非所有解析器都希望引用键
您缺少按键周围的 "s
错误:
JSON.parse('{key1: "val1", data:{ key2: "val2", key3: "val3" }}')
右:
JSON.parse('{"key1": "val1", "data":{ "key2": "val2", "key3": "val3" }}')
为键添加双引号,因为解析器需要它们 -
var test = '{"key1": "val1", "data":{ "key2": "val2", "key3": "val3" }}'
console.log(JSON.parse(test))
关于您的问题:我怎样才能获得有效的 JSON 开始?
我说……用JSON.stringify()
.
也就是说,如果你只是在学习JSON(好像你是),那么使用JSON.stringify()
作为教学工具。
在您的控制台中,键入:
obj = {key1: "val1", data:{ key2: "val2", key3: "val3" }}
JSON.stringify(obj)
你会看到结果是有效的 JSON:
'{"key1":"val1","data":{"key2":"val2","key3":"val3"}}'
从这里,您可以看到您遗漏了键周围的双引号。
如果您受困于该库在字符串中返回看起来像 JavaScript 的值,您可以使用 JavaScript 的 eval()
,如下所示:
# nominal return value -- valid JavaScript in a string (that isn't JSON)
var rval_str = '{key1: "val1", data:{ key2: "val2", key3: "val3" }}'
# use eval() to 'decode' rval_str
eval("rval = " + rval_str)
rval
给予
{key1: "val1", data:{ key2: "val2", key3: "val3" }}
当然,如果您不信任库返回的内容,这会非常冒险(使用 eval
)。
给出
var test = '{key1: "val1", data:{ key2: "val2", key3: "val3" }}' => returned by third party library
expectedOutput = {key1: "val1", data:{ key2: "val2", key3: "val3" }}
我试过 JSON.parse(test) => 抛出错误 我试过 JSON.parse(JSON.stringify(test)) => returns 字符串双解析结果错误。
我错过了什么?
如何通过解析得到 JSON 而不是字符串?
您可能需要引用您的密钥:
var test = '{"key1": "val1", "data":{ "key2": "val2", "key3": "val3" }}'
除了许多 JSON 解析器之外,并非所有解析器都希望引用键
您缺少按键周围的 "s
错误:
JSON.parse('{key1: "val1", data:{ key2: "val2", key3: "val3" }}')
右:
JSON.parse('{"key1": "val1", "data":{ "key2": "val2", "key3": "val3" }}')
为键添加双引号,因为解析器需要它们 -
var test = '{"key1": "val1", "data":{ "key2": "val2", "key3": "val3" }}'
console.log(JSON.parse(test))
关于您的问题:我怎样才能获得有效的 JSON 开始?
我说……用JSON.stringify()
.
也就是说,如果你只是在学习JSON(好像你是),那么使用JSON.stringify()
作为教学工具。
在您的控制台中,键入:
obj = {key1: "val1", data:{ key2: "val2", key3: "val3" }}
JSON.stringify(obj)
你会看到结果是有效的 JSON:
'{"key1":"val1","data":{"key2":"val2","key3":"val3"}}'
从这里,您可以看到您遗漏了键周围的双引号。
如果您受困于该库在字符串中返回看起来像 JavaScript 的值,您可以使用 JavaScript 的 eval()
,如下所示:
# nominal return value -- valid JavaScript in a string (that isn't JSON)
var rval_str = '{key1: "val1", data:{ key2: "val2", key3: "val3" }}'
# use eval() to 'decode' rval_str
eval("rval = " + rval_str)
rval
给予
{key1: "val1", data:{ key2: "val2", key3: "val3" }}
当然,如果您不信任库返回的内容,这会非常冒险(使用 eval
)。