我的输出格式如下
"[{"a":"a1"},{"a":"a2"}]"
我想在json数组中实际提取它:
[
{
"a":"a1"
},
{
"a":"a2"
}
]
如何转换?
答案 0 :(得分:2)
您已使用Node-RED对此进行了标记 - 所以我的回答是假设您正在使用的环境。
如果要将消息传递给Debug节点,这是您在Debug侧栏中看到的,那表明您的msg.payload
是一个内容为[{"a":"a1"},{"a":"a2"}]
的String - Debug sidebar doesn'在显示类似的字符串时转义引号。
所以你可能已经拥有了你想要的东西 - 这取决于你接下来要用它做什么。
如果要访问内容,则需要将其解析为JavaScript对象。您可以通过将消息传递到JSON节点来完成此操作。
答案 1 :(得分:0)
假设您的输入在开头和结尾包含双引号,则无法直接使用JSON.parse()字符串。
在您的情况下,您需要在解析之前从字符串中删除第一个和最后一个字符(双引号)。
const unformattedString = '"[{"a":"a1"},{"a":"a2"}]"'
const formattedString = unformattedString.substr(1, unformattedString.length - 2)
const json = JSON.parse(formattedString)
变量json现在包含您的JSON对象。
答案 2 :(得分:0)
我会建议一种不同的方法,可以在不使用任何第三方库的情况下完成工作。
var a = '[{"a":"a1"},{"a":"a2"}]';
var b = JSON.parse(a);
console.log(b); // b will return [{"a":"a1"},{"a":"a2"}]
eval 函数的另一种方式是generally not recommended
var d = eval(a);
如果您想使用JQuery,请使用:
var c = $.parseJSON(a);