用JS构建JSON字符串

假如有如下字符数组:

var City=['丽江',"宜宾","南京"];
var Province=["云南","四川","江苏"];
var Food = ["米线","燃面","雨花茶"];

想要将他们整合为如下JSON字符串,可以怎么做呢?

[{"city":"丽江","province":"云南","Food":"米线"},{"city":"宜宾","province":"四川","Food":"燃面"},{"city":"南京","province":"江苏","Food":"雨花茶"}]

先定义如下数据单元:

  var CityJSON=[];//定义JSON对象存放各元素值
  var CityItem={};//JSON对象中的元素值

CityItem是最终JSON对象中的一个抽象子元素,他应该包含三个属性值,分别为city,province,food,因此,需要对它进行赋值,最后将整体作为CItyJSON的子元素。

  CityItem.city= City[i];
  CityItem.province=Province[i];
  CityItem.Food=Food[i];
  CityJSON.push(CityItem);

如果只是这样的话,会出现一个问题,最终得到的JSON字符串的各个元素值是一样的,这个我还不清楚原因,有知道原因的可以解释一下,谢谢!要解决的话,需要在循环最后插入一句代码:

  CityItem.city= City[i];
  CityItem.province=Province[i];
  CityItem.Food=Food[i];
  CityJSON.push(CityItem);
  CityItem={};

以下是没有CityItem={}这句代码的输出结果:

第一次循环的输出:
[{"city":"丽江","province":"云南","Food":"米线"}]
第二次循环的输出:
[{"city":"宜宾","province":"四川","Food":"燃面"},{"city":"宜宾","province":"四川","Food":"燃面"}]
第三次循环的输出:
[{"city":"南京","province":"江苏","Food":"雨花茶"},{"city":"南京","province":"江苏","Food":"雨花茶"},{"city":"南京","province":"江苏","Food":"雨花茶"}]

(上面的结果很奇怪,我也不太清楚原因,希望知道的可以出来解释一下)
所有正确代码如下:

var City=['丽江',"宜宾","南京"];
  var Province=["云南","四川","江苏"];
  var Food = ["米线","燃面","雨花茶"];
  var CityJSON=[];//定义JSON对象存放各元素值
  var CityItem={};//JSON对象中的元素值
  for(i=0;i<City.length;i++){
    CityItem.city= City[i];
    CityItem.province=Province[i];
    CityItem.Food=Food[i];
    CityJSON.push(CityItem);
    CityItem={};
    console.log(JSON.stringify(CityJSON));
  }

最终循环输出结果为:

[{"city":"丽江","province":"云南","Food":"米线"},{"city":"宜宾","province":"四川","Food":"燃面"},{"city":"南京","province":"江苏","Food":"雨花茶"}]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值