【问题标题】:Electronjs manipulate json object and reorder its keys internallyElectronjs 操作 json 对象并在内部重新排序其键
【发布时间】:2018-07-30 04:34:10
【问题描述】:

我正在将 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 或反之亦然时, electronjs 会按照自己的方式对对象进行重新排序,并给出这个结果:

2_1,2_10,2_11,2_13,2_14,2_15,2_2,2_4,2_5,3_01

electron 可以在内部序列化 JSON 中的参数。 因此,我尝试使用 vanilla javascript 应用相同的代码来显示相同​​的对象, 我得到了与原始对象相同的顺序,使用序列化对象或非序列化:

3_01,2_5,2_10,2_11,2_13,2_1,2_2,2_4,2_14,2_15

如何防止 electronjs 在内部操作对象以获取准确的原始对象

【问题讨论】:

  • 这不是一个数组。它甚至不是一个有效的对象。数组将有方括号 ([])....

标签: javascript json sorting electron


【解决方案1】:

JSON 对象不应该保持相同的顺序。

Check this Answer

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 2020-05-21
    • 1970-01-01
    • 2020-05-03
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    相关资源
    最近更新 更多