如何显示带有{“id”:“value”}的json对象而不是{“col1”:“id”,“col2:”value“}

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

所以我使用languages.js.org创建多语言网站,数据库名为ft_main table ft_lang,翻译包含2列:id,en。

使用JSON,我可以从我的数据库中显示JSON对象,如下所示:

{"id":"1","en":"First translation"},
{"id":"2","en":"Second translation"},
{"id":"3","en":"Third translation"},
...

但是languages.js不会像上面那样使用对象格式运行,它将以如下格式运行:

{"1":"First translation"},
{"2":"Second translation"},
{"3":"Third translation"},
...

那么如何使用JSON以我上面提到的格式从我的数据库中显示对象呢?

mysql json
2个回答
1
投票

您可以使用map来简化代码:

var data = [
  {"id":"1","en":"First translation"},
  {"id":"2","en":"Second translation"},
  {"id":"3","en":"Third translation"}];
var newData = data.map(obj => ({[obj.id]: obj.en}));
console.log(newData);

说明:

  • data.map(fn)将函数fn应用于data数组中的每个元素,并将结果返回到相同大小的数组中。
  • obj => ({[obj.id]: obj.en})是一个翻译,它接受一个obj并返回一个包含单个属性的对象,其中obj.id为关键,obj.en为值。 这就是将{"id": "foo", "en": "bar"}变成{"foo": "bar"}的原因。 外部()是必需的,否则JavaScript将尝试将{}中的内容视为函数。 在[]周围需要obj.id,所以解析器知道整个关键是obj.id而不是obj

1
投票

你只需要遍历数组并创建一个像这样的新数组:

var data = [
{"id":"1","en":"First translation"},
{"id":"2","en":"Second translation"},
{"id":"3","en":"Third translation"}];
var newData = [];
data.forEach(function(obj) {
  var newObj = {};
  newObj[obj.id] = obj.en;
  newData.push(newObj);
});
console.log(newData);
© www.soinside.com 2019 - 2024. All rights reserved.