将带有对象和数组的JSON转换为String

时间:2017-05-12 14:00:00

标签: javascript arrays json node.js

我有一个JSON对象,如下所示:

    {
        files: ['test.mp4'],
        name: ['testFile'],
        hints: ['%YES%_%MAYBE%_%NO%']
    }

我需要将其转换为String,因此输出如下所示:

[{files=test, name=testFile, hints= %YES%_%MAYBE%_%NO%}]

这可以在Node JS中实现吗?感谢

我尝试了以下内容:

var x = {
    files: ['test.mp4'],
    name: ['testFile'],
    hints: ['%YES%_%MAYBE%_%NO%']
}
console.log(JSON.stringify(x));

但输出如下:

{"files":["test.mp4"],"name":["testFile"],"hints":["%YES%_%MAYBE%_%NO%"]}

仍然使用方括号。我可能不会100%知道上面对象中的键和值。

1 个答案:

答案 0 :(得分:0)

TL; DR 除非你绝对不得不这样做(即你正在处理其他必须拥有此格式数据的其他人编写的混乱API)

如果您想要完全符合问题中列出的格式,那么您将不得不编写自己的stringify函数,该函数以递归方式遍历您传递给它的对象并应用您想要使用的任何规则。您必须考虑对象的所有可能排列并拼出这些规则。

例如,您已将初始对象中包含单个元素的数组转换为字符串 - 如果数组中有多个元素,会发生什么?它应该用逗号还是其他角色分隔?我们应该在第一次之后扔掉元素吗?

一旦你编写了stringify函数,你还必须编写相应的parse函数来反转它。并且应该提到的是,在您的示例中,您丢弃了信息(例如.mp4文件上的文件扩展名) - 您将如何处理该信息?

更好,更好的方式来实现此目的的是做其他人在此处建议的内容:使用JSON.stringify 并重写代码以使用标准JSON对象。为什么?因为格式记录良好且易于理解,并且因为转换功能已经过充分测试。 如果你不试图重新发明轮子,你将节省很多时间和痛苦