将数组转换为json对象

时间:2015-01-29 04:09:01

标签: javascript json

我有一个像这样的数组

[ 'quality',
  'print-quality: 4',
  'x-dimension',
  'Value: 21590',
  'Value: y-dimension',
  'Value: 27940',
  'Value: ',
  'Value: media-bottom-margin',
  'Value: 0',
  'Value: media-left-margin',
  'Value: 0',
  'Value: media-right-margin',
  'Value: 0',
  'Value: media-top-margin',
  'Value: 0',
  'Value: ' ]

我正在尝试按以下格式将此数组转换为json

 { "quality": "print-quality: 4",
  "x-dimension": "21590",
  "y-dimension": "27940", 
  "media-bottom-margin": "0",
  "media-left-margin" : "0",
 "media-right-margin": "0",
  "media-top-margin" : "0" 
 }

我需要删除所有'Value'字符串以及如何以上述格式获取

1 个答案:

答案 0 :(得分:4)

您不能创建这样的关联数组,因为JavaScript没有关联数组。但是你可以创建一个对象,这就是你想要的。

这是一种方法:

var data = [ 'quality',
        'print-quality: 4',
        'x-dimension',
        'Value: 21590',
        'Value: y-dimension',
        'Value: 27940',
        'Value: ',
        'Value: media-bottom-margin',
        'Value: 0',
        'Value: media-left-margin',
        'Value: 0',
        'Value: media-right-margin',
        'Value: 0',
        'Value: media-top-margin',
        'Value: 0',
        'Value: ' ],
    cleanData,
    newData = {}; // initialize the new object

cleanData = data
    .map( function(x) { return x.replace(/^Value: /, ''); }) // remove leading "Value: " 
    .filter( function (x) { return !x.match(/^$/); } ); // strip empty values 

for (i = 0; i < cleanData.length; i += 2) { // loop over the cleaned-up array
    newData[cleanData[i]] = cleanData[i + 1];
}

结果是newData(以JSON格式表示可读性)是:

{
    "quality":"print-quality: 4",
    "x-dimension":"21590",
    "y-dimension":"27940",
    "media-bottom-margin":"0",
    "media-left-margin":"0",
    "media-right-margin":"0",
    "media-top-margin":"0"
}