我在NSIS安装程序中使用nsJSON插件来创建多个json文件。如何清除文件之间的数组,以便在创建其他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 :(得分: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
如果你绝对需要将root作为一个数组,我认为你需要使用/ tree参数解决这些错误并简单地使用多个JSON树。
如果我找到更好的删除整个树的方法,我会问插件作者并更新这个答案...
编辑:
现在已经发布了新版本的nsJSON(v1.1.1.0),它可以解决这些问题。试试nsJSON::Delete /end