我应该如何将数字映射到JSON中的文本?

时间:2016-06-08 18:54:29

标签: javascript json

在JSON中将数字映射到文本时,最佳做法是什么? JavaScript map是完美的,因为我可以使用数字作为键,我不能用对象做:

let map = new Map();

map.set(1, 'describe 1');
map.set(2, 'describe 2');

......等等。但是据我所知,你不能在json中使用地图。最好的选择真的只是使用一组数组吗?

[
  [ 1, 'describe 1' ],
  [ 2, 'describe 2' ]
]

3 个答案:

答案 0 :(得分:4)

JSON代表“JavaScript Object Notation”,是Javascript的子集 - 特别是用于写出对象的子集。您正在键入的地图会创建一个对象。 map.set函数输出的那个对象就是你所得到的。你可以通过这样做来看到它。

let map = new Map();

map.set(1, 'describe 1');
map.set(2, 'describe 2');
console.log(JSON.stringify(map));

我认为你希望你的数字是字符串,在这种情况下你可以这样做:

let map = new Map();

map.set('1', 'describe 1');
map.set('2', 'describe 2');

但是,如果您的数字用于标识数组上项目的索引,那么您可能会这样做:

[null, 'describe 1', 'describe 2']

无论哪种方式,您都可以使用JSON.stringify

查看

有关更多证据,以下是Chrome输入的输出内容:

> let map = new Map();
undefined
> map.set(1, 'describe 1');
Map {1 => "describe 1"}
> map.set(2, 'describe 1');
Map {1 => "describe 1", 2 => "describe 1"}

看起来像是:

{ 1: 'describe 1', 2: 'describe 2' }

作为Javascript对象(即JSON)

有关JSON的更多信息,请查看http://www.json.org/

答案 1 :(得分:3)

您可以使用字符串值“1”,“2”等作为JSON文件中的键,然后如果要获取数字值,则在其上调用parseInt。然后,您可以编写一个将导入的JSON文件转换为Map的函数。像

这样的东西
function JSONtoMap(src){
  var m = new Map();
  for(var key in src)
    m.set(parseInt(key), src[key])
  return m;
}

答案 2 :(得分:1)

有几种方法可以在JSON中使用。

使用带有转换为字符串的数字的对象作为键(如Weston所描述的那样):{'1':'describe 1', '2': 'describe 2'}

或将文字作为键的对象:{'describe 1':1, 'describe 2':2}

或创建一个数组,使索引与数组中该位置的文本配对的数字匹配:[,'describe 1', 'describe 2']