gpt4 book ai didi

javascript - 解析十六进制 JSON 对象

转载 作者:行者123 更新时间:2023-11-29 22:03:06 24 4
gpt4 key购买 nike

我们有一个应用程序可以生成复杂的 JSON 对象,这些对象的属性和值已转换为十六进制。我怎样才能将它们还原为字符串?

示例对象:

{
"636f756e747279":
{
"6e616d65": "43616e616461",
"636f6465": "4341"
},
"617574686f72":
{
"6e616d65": "4a61736d696e652048656174686572",
"67656e646572": "66",
"626f6f6b496473":
[
"6a65683233696f",
"33393233393130"
]
}
}

到目前为止的代码:

var data = require( './data.json' );
var parsed = {};

Object.keys( data ).forEach( function( key, index, keys )
{
var prop = new Buffer( key, 'hex' ).toString();
var value = new Buffer( data[ key ], 'hex' ).toString();

parsed[ prop ] = value;
});

console.log( parsed );

但此代码仅适用于具有简单键值对的简单 JSON 对象。

最佳答案

你需要做类型检查和递归。虽然这段代码没有使用它,但我也建议你使用 underscore.js 来简化循环和类型检查。

var data = {
"636f756e747279":
{
"6e616d65": "43616e616461",
"636f6465": "4341"
},
"617574686f72":
{
"6e616d65": "4a61736d696e652048656174686572",
"67656e646572": "66",
"626f6f6b496473":
[
"6a65683233696f",
"33393233393130"
]
}
};

var unpack = function(hex) {
return new Buffer( hex, 'hex' ).toString();
};

var convert_object = function(data) {
if (typeof data === 'string') {
return unpack(data);
} else if (Array.isArray( data )) {
return data.map(convert_object);
} else if (typeof data === 'object') {
var parsed = {};

Object.keys( data ).forEach( function( key, index, keys ) {
parsed[ unpack(key) ] = convert_object( data[key]);
});

return parsed;
} else {
throw ("Oops! we don't support type: " + (typeof data));
}
};

console.log( convert_object(data) );

关于javascript - 解析十六进制 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22518893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com