如何将JSON转换为INI格式

nue99wik  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(222)

我想知道,如果有一种方法与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


谢谢你这么多提前!

aor9mmx1

aor9mmx11#

如果你碰巧使用了node.js环境:你可以安装和使用

npm install json2ini

字符串
在你的代码中,你可以使用这样的东西:

const json2ini = require('json2ini');

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

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


如果没有,我猜拉约斯·阿帕德的方法会做到这一点。

kwvwclae

kwvwclae2#

当然。请看下面:

/*
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地址处理,否则将其添加

相关问题