将 JSON 对象字符串数组转换为 JS 对象数组

Convert array of JSON object strings to array of JS objects

本文关键字:数组 对象 JS 转换 字符串 JSON      更新时间:2023-09-26

我想将JSON字符串数组转换为JSON对象数组,而无需循环遍历每个项目并使用JSON.parse对其进行解析。

例:

var s=[
  '{"Select":"11", "PhotoCount":"12"}',
  '{"Select":"21", "PhotoCount":"22"}',
  '{"Select":"31", "PhotoCount":"32"}'];

如果你有一个 JSON 对象的 JS 数组:

var s=['{"Select":"11","PhotoCount":"12"}','{"Select":"21","PhotoCount":"22"}'];

并且您需要一个对象数组:

// JavaScript array of JavaScript objects
var objs = s.map(JSON.parse);
// ...or for older browsers
var objs=[];
for (var i=s.length;i--;) objs[i]=JSON.parse(s[i]);
// ...or for maximum speed:
var objs = JSON.parse('['+s.join(',')+']');

有关浏览器比较,请参阅速度测试。


如果您有单个表示对象数组的 JSON 字符串:

var s='[{"Select":"11","PhotoCount":"12"},{"Select":"21","PhotoCount":"22"}]';

并且您需要一个对象数组:

// JavaScript array of JavaScript objects
var objs = JSON.parse(s);

如果您有对象数组:

// A JavaScript array of JavaScript objects
var s = [{"Select":"11", "PhotoCount":"12"},{"Select":"21", "PhotoCount":"22"}];

...并且您需要为其提供JSON表示形式,然后:

// JSON string representing an array of objects
var json = JSON.stringify(s);

或者如果你想要一个 JSON 字符串的 JavaScript 数组,那么:

// JavaScript array of strings (that are each a JSON object)
var jsons = s.map(JSON.stringify);
// ...or for older browsers
var jsons=[];
for (var i=s.length;i--;) jsons[i]=JSON.stringify(s[i]);
var json = jQuery.parseJSON(s); //If you have jQuery.

由于注释看起来很杂乱,请在将这些方括号括在引号内后使用 parse 函数。

var s=['{"Select":"11","PhotoCount":"12"}','{"Select":"21","PhotoCount":"22"}'];

将上面的代码更改为

var s='[{"Select":"11","PhotoCount":"12"},{"Select":"21","PhotoCount":"22"}]';

例如:

$(document).ready(function() {
    var s= '[{"Select":"11","PhotoCount":"12"},{"Select":"21","PhotoCount":"22"}]';
    s = jQuery.parseJSON(s);
    alert( s[0]["Select"] );
});

然后使用解析函数。它肯定会起作用。

编辑:非常抱歉我给了错误的函数名称。

Jquery

json API

编辑(2020年4月30日):

编辑,因为我对这个答案投了赞成票。有一个浏览器原生函数代替JQuery(对于非JQuery用户),JSON.parse("<json string here>")

如果你

真的有:

var s = ['{"Select":"11", "PhotoCount":"12"}','{"Select":"21", "PhotoCount":"22"}'];

然后简单地:

var objs = $.map(s, $.parseJSON);

这是一个演示。