最近在使用creator開發微信小游戲時,遇到了一個問題,就是合并json文件時出現了問題。具體情況是,在開發過程中需要使用多個json文件,但是微信小游戲規定只能使用一個json文件,因此需要將多個文件合并成一個。
我采用的方式是在代碼中使用js的方法讀取文件內容,然后將內容合并成一個json對象,最后將這個對象轉化成字符串保存到一個新的文件中。但是合并后的json文件無法被微信小游戲識別,經過排查,發現問題出現在json文件格式的轉化上。
let jsonList = [ { "name": "小明", "age": "18" }, { "name": "小紅", "age": "20" } ]; let jsonData = {}; for (let i = 0; i< jsonList.length; i++) { let data = jsonList[i]; for (let key in data) { if (!jsonData[key]) { jsonData[key] = []; } jsonData[key].push(data[key]); } } let result = JSON.stringify(jsonData); console.log(result); // {"name":["小明","小紅"],"age":["18","20"]}
在上面的例子中,我創建了一個包含兩個json對象的數組,然后將這兩個對象的鍵值對分別存入一個新的json對象中,最后將這個對象轉化為json字符串輸出。但是,微信小程序對json文件有一個要求,那就是json文件必須以{"":""}的格式作為文件開頭和結尾,而上述代碼輸出的字符串卻是{"name":["小明","小紅"],"age":["18","20"]},并沒有符合要求的格式。
為了解決這個問題,我們需要補全json文件的格式。可以在代碼中加入以下字符串拼接操作:
let jsonStr = JSON.stringify(jsonData); jsonStr = "{" + '"' + "" + '"' + ":" + '"' + "" + '"' + ',' + jsonStr.substr(1, jsonStr.length - 2) + "}"; console.log(jsonStr); // {"":{"name":["小明","小紅"],"age":["18","20"]}}
我們添加了一些字符串拼接操作,將json字符串的第一個花括號替換為{"":""}格式,這樣就將文件格式變為了符合微信小游戲要求的格式。通過這樣的操作,我們的json文件就可以被正常識別了。
上一篇vue 微信title