nodejs中的模糊格式输出

时间:2018-02-15 11:09:27

标签: json node.js node-red

我的输出格式如下

"[{"a":"a1"},{"a":"a2"}]"

我想在json数组中实际提取它:

[
   {
      "a":"a1"
   },
   {
      "a":"a2"
   }
] 

如何转换?

3 个答案:

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