将逗号分隔的json对象列表转换为数组

时间:2017-07-19 08:37:46

标签: javascript arrays json object

我收到的javascript对象有问题。 我收到这样的话:

{
 "name":"a",
 "surname":"b"
},
{
 "name":"c",
 "surname":"d"
},
{
 "name":"e",
 "surname":"f"
}

我将它存储在变量中,我希望有一个json对象数组,即JSON数组。

[{  “名”:“一”,  “姓”: “B” }, {  “名”: “C”,  “姓”: “d” }, {  “名”: “E”,  “姓”: “F” }]

我需要一些像array.push()的东西,但如果我之前没有拆分文件,我就无法做到。

2 个答案:

答案 0 :(得分:3)

这是一种无效的表示法 - JavaScript对象或JSON。如果您可以修改输入或者可以让某人修复它,那么使数据源有效肯定会更好。

但是,有时我们必须使用错误的数据(外部提供程序等),然后您可以通过在开头和结尾添加几个括号使其成为有效的JSON数组:

var str = '{ "name":"a",  "surname":"b" }, {  "name":"c",  "surname":"d" }, {  "name":"e",  "surname":"f" }';
var arr = JSON.parse("[" + str + "]");
//console.log(arr);

for (var i = 0; i < arr.length; i++)
{
  console.log("Name #" + (i + 1) + ": " + arr[i].name);
  console.log("Surname #" + (i + 1) + ": " + arr[i].surname);
}

它可能看起来有点hacky,但是当你必须使用这样的输入时,这是你能做的最好的事情。
它看起来比尝试用逗号分割对象要好得多,至少对我而言。

答案 1 :(得分:0)

我有一个函数可以根据需要拆分多个数组中的对象数组,请参阅代码:)

var BATCH_SIZE = 2;

var fullList = [{name:"a",surname:"e"},{name:"a",surname:"e"}
  , {name:"a",surname:"e"},{name:"a",surname:"e"}, {name:"a",surname:"e"}];

Batchify(fullList,BATCH_SIZE);

function Batchify(fullList,BATCH_SIZE){
    var batches = [];
    var currentIndex = 0;
    while (currentIndex < fullList.length) {
       var sliceStart = currentIndex;
       var sliceEnd = currentIndex + BATCH_SIZE;
       batches.push(fullList.slice(sliceStart, sliceEnd));
       currentIndex += BATCH_SIZE;
    }
    console.log(batches);
}

我在JSfiddle中有代码示例,希望能解决您的问题! :)