2017-09-26 127 views
0

我在NSIS安装程序中使用nsJSON插件来创建多个json文件。如何清除文件之间的数组,以便在创建额外的json时,它不具有来自先前文件的值。使用nsJSON创建多个json文件

这一个简单的例子:

nsJSON::Set /value '[]' 
nsJSON::Set /value '{ "Input": [ { "test1": false, } ]' 
nsJSON::Set /value '{ "Input": [ { "test2": false, } ]' 
nsJSON::Serialize /format /file "C:\false.json" 

nsJSON::Set /value '[]' 
nsJSON::Set /value '{ "Input": [ { "test1": true, } ]' 
nsJSON::Set /value '{ "Input": [ { "test2": true, } ]' 
nsJSON::Serialize /format /file "C:\true.json" 

在上面的例子中,true.json文件将有被我期望给予代码​​的所有设定值,但是我正在寻找如何明确一旦数据被写入文件,数组就会被存储。

回答

0

您的JSON示例格式错误,您缺少}但这并不能解释问题。

看来nsJSON不喜欢根数组。

nsJSON::Set /value '{ "Input": [ { "test1": false, } ] }' 
nsJSON::Set /value '{}' # <-- Works, it is now just a empty object 

还有一个删除命令:

nsJSON::Set /value '{ "Input": [ { "test1": false, } ] }' 
nsJSON::Delete "Input" /end 

如果你确实需要的根是一个数组,我认为你需要解决的错误使用/树参数,简单地使用多个JSON树。

我会问插件作者,如果我找到一个更好的方式来删除整个树更新这个答案...

编辑:

nsJSON的新版本已经正式发布( v1.1.1.0),它可以解决这些问题。尝试nsJSON::Delete /end

+0

谢谢,那是我开始进入的方向,应用程序使用JSON作为配置并要求参数位于根目录。 – afriesenborg

+0

我与作者取得联系,他认为它也是一个错误。当我知道更多时,我会更新。 – Anders