2017-09-26 126 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