JSON编码后,将JavaScript对象键转换为真实INT



我有这个:

var a = {};
a[1] = 1;
a[4] = 4;
console.log(JSON.stringify(a));

然后我得到:

{"1":1,"4":4}

,但我想得到:

{1:1,4:4}

如何达到这个?换句话说,我想钥匙是真正的int。

调用json.stringify()方法时,它会创建有效的JSON字符串。有效JSON的规则之一是每个属性都应在"引号"中。

所以这就是为什么不可能使用json.stringify的结果。

如果您只想将这种对象转换为数组,例如usin usin usin。

function numerableObjectToArr(obj) {
  var result = [];
  var keys = Object.keys(obj);
  keys.forEach(function(item){
    result.push(obj[item]);
  })
  return result; 
}
var a = {};
a[1] = 1;
a[4] = 4;
numerableObjectToArr(a); // returns [1, 4]

但是,以这种方式,您只会收到具有OBJ中现有属性值的数组。

但是,如果您的道具名称表示数组中的索引,并且您确定总会有数字作为道具名称 - 您可以改善此功能:

function numerableObjectToArr(obj) {
  var result = [];
  var keys = Object.keys(obj);
  keys.forEach(function(item){
    result[+item] = obj[item];  //we put index, then we put value to that place in array
  })
  return result; 
}
var a = {};
a[1] = 1;
a[4] = 4;
numerableObjectToArr(a);  // returns [undefined, 1, undefined, undefined, 4]

我不确定您是否可以执行自己的操作,因为键必须是字符串值。我建议为您的键配有字符串名称(即1 =一个,2 =两个等)。然后您可以尝试以下操作:

 var a = {};
    a.one = 1;
    a.two = 2;
    a.three = 3;
    a.four = 4;
    console.log(JSON.stringify(a));

我希望这会有所帮助。

var a = {};
a[1] = 1;
a[4] = 4;
alert(JSON.stringify(a).replace(/"([0-9]+)":/g, '$1:'));

但这是kludge。JSON-有一个字符串键。

最新更新