大牛请绕道,本文主要用于自己查看
这几天遇到一个需求,安卓返回一组数据,需要转化为JSON,格式如下
一看好多转译符,好家伙。JSON.parse不起效果但是数组的长度却可以获取到 尝试了一下
let successList= ["{\"blockId\":38,\"cancelUploadState\":0,\"fileLength\":386604,\"fileName\":\"30000040_1001_2.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/1001\/wav\/30000040_1001_2.wav\",\"id\":2,\"index\":0,\"number\":\"2\",\"taskId\":\"1218\",\"taskName\":\"手机语音采集-成功1\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}",
"{\"blockId\":30,\"cancelUploadState\":0,\"fileLength\":297004,\"fileName\":\"30000040_10000002-2018112300001_2.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/10000002-2018112300001\/wav\/30000040_10000002-2018112300001_2.wav\",\"id\":4,\"index\":0,\"number\":\"2\",\"taskId\":\"10000002-2018112300001\",\"taskName\":\"手机语音采集-成功2\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}",
"{\"blockId\":31,\"cancelUploadState\":0,\"fileLength\":307244,\"fileName\":\"30000040_10000002-2018112300001_3.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/10000002-2018112300001\/wav\/30000040_10000002-2018112300001_3.wav\",\"id\":6,\"index\":0,\"number\":\"3\",\"taskId\":\"10000002-2018112300001\",\"taskName\":\"手机语音采集-成功3\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}","{\"blockId\":38,\"cancelUploadState\":0,\"fileLength\":386604,\"fileName\":\"30000040_1001_2.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/1001\/wav\/30000040_1001_2.wav\",\"id\":2,\"index\":0,\"number\":\"2\",\"taskId\":\"1218\",\"taskName\":\"手机语音采集-成功1\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}",
"{\"blockId\":30,\"cancelUploadState\":0,\"fileLength\":297004,\"fileName\":\"30000040_10000002-2018112300001_2.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/10000002-2018112300001\/wav\/30000040_10000002-2018112300001_2.wav\",\"id\":4,\"index\":0,\"number\":\"2\",\"taskId\":\"10000002-2018112300001\",\"taskName\":\"手机语音采集-成功2\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}",
"{\"blockId\":31,\"cancelUploadState\":0,\"fileLength\":307244,\"fileName\":\"30000040_10000002-2018112300001_3.wav\",\"filePath\":\"\/storage\/emulated\/0\/dataPlus\/30000040\/10000002-2018112300001\/wav\/30000040_10000002-2018112300001_3.wav\",\"id\":6,\"index\":0,\"number\":\"3\",\"taskId\":\"10000002-2018112300001\",\"taskName\":\"手机语音采集-成功3\",\"taskType\":\"CL\",\"uploadState\":5,\"userId\":\"30000040\"}"]
我是这样操作的
let newSuccessList = [];
for (let i = 0; i < successList.length; i++) {
let item = JSON.parse(successList[i]);
newSuccessList.push(item);
}
然后数组的格式并不是自己想要的,需要把数组中taskName相同的对象放进同一个数组,使用了如下方法
let titleArr = [];
let finaObj = {};
newSuccessList.forEach(function(obj) {
let array = finaObj[obj["taskName"]] || [];
array.push(obj);
finaObj[obj["taskName"]] = array;
});
titleArr = Object.keys(finaObj);
let newTitle = [];
for(let i=0;i<titleArr.length;i++){
let item = titleArr[i];
let newItem = [];
for(let j=0;j<newSuccessList.length;j++){
if(newSuccessList[j].taskName===item){
newItem.push(newSuccessList[j]);
}
}
let newObj = {
title:titleArr[i],
content:newItem
}
newTitle.push(newObj);
}
数组newTitle就是想要的格式