我正在将electronjs用于新应用程序,并且有一个json对象
jsonData
具有包含数字的字符串元素(以下是索引文件):
index.html
<html>
<head>
<title>Test Json Sorting Order</title>
<meta charset="utf-8"/>
<script>
const {ipcRenderer } = require('electron');
let jsonData = {
"3_01":"element301",
"2_5": 'element05',
'2_10': 'element10',
"2_11": 'element11',
'2_13': 'element13',
'2_1': 'element01',
'2_2': 'element02',
'2_4': 'element04',
'2_14': 'element14',
'2_15': 'element15',
};
window.onload = function () {
let elemV = document.getElementById('testVanilla');
for (let i in jsonData)
elemV.innerHTML += i + "<br /> ";
}
ipcRenderer.send('MsgOne', jsonData);
ipcRenderer.once('MsgOne-reply', (event, json) => {
let elemE = document.getElementById('testElectron');
for (let i in json)
elemE.innerHTML += i + "<br />" ;
});
</script>
</head>
<body>
<h2> Vanilla Javascript Example output </h2>
<div id = "testVanilla"> </div>
<h2> ElectronJs Example output </h2>
<div id = "testElectron"> </div>
</body>
</html>
这是main.js
文件
const {app, BrowserWindow, ipcMain} = require('electron')
const path = require('path');
const startUrl = path.resolve(__dirname + path.sep + 'index.html');
let win
function createWindow () {
win = new BrowserWindow({width: 800, height: 600})
win.loadURL(startUrl);
win.webContents.openDevTools();
win.on('closed', function () {
win = null
})
}
app.on('ready', createWindow)
ipcMain.on('MsgOne',(event, arg) => {
event.sender.send('MsgOne-reply', arg);
})
当我想将此数据对象从ipcMain发送到ipcRenderer或反之时, electronicjs将按照自己的方式对对象进行重新排序,并给出以下结果:
2_1,2_10,2_11,2_13,2_14,2_15,2_2,2_4,2_5,3_01
electron在内部将JSON中的参数序列化。 因此,我尝试使用香草javascript应用相同的代码来显示相同的对象, 并且我使用序列化对象或非序列化对象获得了与原始对象相同的顺序:
3_01,2_5,2_10,2_11,2_13,2_1,2_2,2_4,2_14,2_15
如何防止electronicjs在内部操纵对象以获得确切的原始对象