如何将 JSON 转换为 INI 格式

问题描述 投票:0回答:2

我想知道,是否有一种使用 javascript 或 typescript 的方法 将 JSON 转换为 INI 格式。我是新手。

来自:

{
"peerEndpoint": "blub.bla:49997",
"peerPublicKey": "dfasdfasfsdfasdfa",
"deviceIPs": [
  "10.40.16.1"
],
"peerAllowedIPs": [
  "10.40.16.0/22",
  "10.40.0.0/20"
],
"applications": {}
}

至:

Address = 10.40.16.1/32
[Peer]
PublicKey = dfasdfasfsdfasdfa
Endpoint = blub.bla:49997
AllowedIPs = 10.40.16.0/22, 10.40.0.0/20

提前非常感谢您!

json ini
2个回答
0
投票

当然。见下图:

/*
Address = 10.40.16.1/32
[Peer]
PublicKey = dfasdfasfsdfasdfa
Endpoint = blub.bla:49997
AllowedIPs = 10.40.16.0/22, 10.40.0.0/20
*/
let json = {
"peerEndpoint": "blub.bla:49997",
"peerPublicKey": "dfasdfasfsdfasdfa",
"deviceIPs": [
  "10.40.16.1"
],
"peerAllowedIPs": [
  "10.40.16.0/22",
  "10.40.0.0/20"
],
"applications": {}
}

function displayIPs(arr) {
    return arr.map(item => item + ((item.indexOf("/") === -1) ? "/32" : "")).join(",");
}

let template = `Address = ${displayIPs(json.deviceIPs)}<br>[Peer]<br>`;
let jsonKeys = ['peerEndpoint', 'peerPublicKey', 'peerAllowedIPs'];
for (let key of jsonKeys) {
    if (key.indexOf("peer") === 0) {
        let k = key.substring(4);
        template += `${k} = ${(k === "AllowedIP") ? displayIPs(json[key]) : json[key]}<br>`;
    }
}

document.write(template);

说明:

  • 我们创建一个json
  • 我们定义一个函数,它接受一个 IP 地址,如果没有定义端口,则默认其结尾为 /32
  • 我们创建一个模板,使用模板文字,使用这个辅助函数来处理地址
  • 我们创建一组对等密钥来确保项目的顺序
  • 我们循环播放这组
  • 对于每个项目,如果需要,我们将其值处理为 IP 地址,并按其他方式添加它们

0
投票

如果您有机会使用 Node.js 环境: 您只需安装并使用即可

npm install json2ini

在你的代码中你可以使用这样的东西:

const json2ini = require('json2ini');

const jsonData = {
  // YOUR JSON-DATA 
};

const iniData = json2ini(jsonData);
console.log(iniData);

如果没有,我想 Lajos Arpad 的方法会成功。

© www.soinside.com 2019 - 2024. All rights reserved.