Javascript 将数组更改为json

Javascript 将数组更改为json,javascript,json,casperjs,Javascript,Json,Casperjs,我一直在玩javascript和casperjs。我有以下几行代码 casper.thenOpen('somesite', function() { console.log('clicked ok, new location is ' + this.getCurrentUrl()); // Get info on all elements matching this CSS selector var town_selector = 'div tr'; var

我一直在玩javascript和casperjs。我有以下几行代码

casper.thenOpen('somesite', function() {

    console.log('clicked ok, new location is ' + this.getCurrentUrl());

    // Get info on all elements matching this CSS selector
    var town_selector = 'div tr';
    var town_names_info = this.getElementsInfo(town_selector); // an array of object literals

    // Pull out the town name text and push into the town_names array
    var town_names = [];
    for (var i = 0; i < town_names_info.length; i++) {
    town_names.push(town_names_info[i].text.trim());}

    // Dump the town_names array to screen
    utils.dump(town_names);    

    casper.capture('capture5.png');
});
我怎样才能把它变成json?像这样

{
    "Address":"address",
    "City":"city",
    "State":"state",
    "Zip":"zip"
}

提前感谢。

您可以使用以下内容:

function arrayToObject(arr) {
  var out = {};
  arr.forEach(function (element) {
    var keyvalue = element.replace(/[\n\s]+/, '').split(':');
    var key = keyvalue[0];
    var value = keyvalue[1];
    out[key] = value;
  });
  return out;
}
然后你可以做:

var json = JSON.stringify(arrayToObject(myArray));
更新

>如何将其更改为仅拆分第一次出现的冒号?

使用以下命令:

arr.forEach(function (element) {
  var keyvalue = element.replace(/[\n\s]+/, '');
  var key = keyvalue.substring(0, element.indexOf(':'));
  var value = keyvalue.substring(key.length + 1);
  out[key] = value;
});

您可以使用以下内容:

function arrayToObject(arr) {
  var out = {};
  arr.forEach(function (element) {
    var keyvalue = element.replace(/[\n\s]+/, '').split(':');
    var key = keyvalue[0];
    var value = keyvalue[1];
    out[key] = value;
  });
  return out;
}
然后你可以做:

var json = JSON.stringify(arrayToObject(myArray));
更新

>如何将其更改为仅拆分第一次出现的冒号?

使用以下命令:

arr.forEach(function (element) {
  var keyvalue = element.replace(/[\n\s]+/, '');
  var key = keyvalue.substring(0, element.indexOf(':'));
  var value = keyvalue.substring(key.length + 1);
  out[key] = value;
});

不知道为什么。买我的产品就是这个<代码>{\'Address\':\'Address\',\'City\':\'City\',\'State\':\'State\',\'Zip\':\'Zip\'}将行更改为
var json=ArrayObject(myArray)为我做的。谢谢。我如何才能将此更改为仅拆分第一次出现的冒号?我有一些类似于“计划开始:08:16 AM”的行,我的输出是“计划开始”:“08”我尝试了“var keyvalue=element.split(“:”,1);”,但这不起作用。不确定为什么。买我的产品就是这个<代码>{\'Address\':\'Address\',\'City\':\'City\',\'State\':\'State\',\'Zip\':\'Zip\'}
将行更改为
var json=ArrayObject(myArray)为我做的。谢谢。我如何才能将此更改为仅拆分第一次出现的冒号?我有一些类似于“计划开始:08:16 AM”的行,我的输出是“计划开始”:“08”我尝试了“var keyvalue=element.split(':',1);”,但没有成功。