如何在javascript中把字符串转换成对象数组?

问题描述 投票:0回答:1

我得到的响应是这样的字符串数组。

 {"columnModelObj":[{"filter":{"type":"list"},"multiValueTextData":true,"dataIndex":"_1","width":150,"text":"FILM"},{"filter":{"type":"list"},"multiValueTextData":true,"dataIndex":"_2","width":150,"text":"GENRE"},{"filter":{"type":"list"},"multiValueTextData":true,"dataIndex":"_3","width":150,"text":"LEAD STUDIO"},{"filter":{"type":"number"},"renderer":formatGridNumberColumn,"dataIndex":"_4","showOriginalData":true,"width":150,"text":"AUDIENCE  SCORE %"},{"filter":{"type":"number"},"renderer":formatGridNumberColumn,"dataIndex":"_5","showOriginalData":true,"width":150,"text":"PROFITABILITY"},{"filter":{"type":"number"},"renderer":formatGridNumberColumn,"dataIndex":"_6","showOriginalData":true,"width":150,"text":"ROTTEN TOMATOES %"},{"filter":{"type":"number"},"renderer":formatGridNumberColumn,"dataIndex":"_7","showOriginalData":true,"width":150,"text":"WORLDWIDE GROSS"},{"filter":{"type":"number"},"renderer":formatGridNumberColumn,"dataIndex":"_8","showOriginalData":true,"width":150,"text":"YEAR"},{"filter":{"type":"list"},"multiValueTextData":true,"dataIndex":"_9","width":150,"text":"DATE"}],"recordModelObj":[{"name":"Film","type":"string"},{"name":"Genre","type":"string"},{"name":"Lead Studio","type":"string"},{"name":"Audience  score %","allowNull":true,"type":"number"},{"name":"Profitability","allowNull":true,"type":"number"},{"name":"Rotten Tomatoes %","allowNull":true,"type":"number"},{"name":"Worldwide Gross","allowNull":true,"type":"number"},{"name":"Year","allowNull":true,"type":"number"},{"name":"Date","type":"string"}]}

我必须把它变成数组对象。任何可能的想法,如何使它。

下面是我正在做的,但没有运气。

var foo = col.split("\n").reduce(function(obj, str, index) {
  let strParts = str.split(":");
  if (strParts[0] && strParts[1]) { 
    obj[strParts[0].replace(/\s+/g, '')] = strParts[1].trim(); 
  }
  return obj;
}, {});
javascript
1个回答
0
投票

看看这个

一个简单的代码就能解决你的问题

data = ' {"columnModelObj":[{"filter":{"type":"list"},"multiValueTextData":true,"dataIndex":"_1","width":150,"text":"FILM"},{"filter":{"type":"list"},"multiValueTextData":true,"dataIndex":"_2","width":150,"text":"GENRE"},{"filter":{"type":"list"},"multiValueTextData":true,"dataIndex":"_3","width":150,"text":"LEAD STUDIO"},{"filter":{"type":"number"},"renderer":formatGridNumberColumn,"dataIndex":"_4","showOriginalData":true,"width":150,"text":"AUDIENCE  SCORE %"},{"filter":{"type":"number"},"renderer":formatGridNumberColumn,"dataIndex":"_5","showOriginalData":true,"width":150,"text":"PROFITABILITY"},{"filter":{"type":"number"},"renderer":formatGridNumberColumn,"dataIndex":"_6","showOriginalData":true,"width":150,"text":"ROTTEN TOMATOES %"},{"filter":{"type":"number"},"renderer":formatGridNumberColumn,"dataIndex":"_7","showOriginalData":true,"width":150,"text":"WORLDWIDE GROSS"},{"filter":{"type":"number"},"renderer":formatGridNumberColumn,"dataIndex":"_8","showOriginalData":true,"width":150,"text":"YEAR"},{"filter":{"type":"list"},"multiValueTextData":true,"dataIndex":"_9","width":150,"text":"DATE"}],"recordModelObj":[{"name":"Film","type":"string"},{"name":"Genre","type":"string"},{"name":"Lead Studio","type":"string"},{"name":"Audience  score %","allowNull":true,"type":"number"},{"name":"Profitability","allowNull":true,"type":"number"},{"name":"Rotten Tomatoes %","allowNull":true,"type":"number"},{"name":"Worldwide Gross","allowNull":true,"type":"number"},{"name":"Year","allowNull":true,"type":"number"},{"name":"Date","type":"string"}]}'

data = data.split("formatGridNumberColumn").join('"formatGridNumberColumn"')

data_object = JSON.parse(data)

而Data_object是你要找的对象。

你看,这里的小人是formatGridNumberColumn,它没有被引用""。所以解析的结果永远不会是一个字符串。

单独的formatGridNumberColumn对javascript来说是陌生的。

因此,我用formatGridNumberColumn分割字符串,然后用 "formatGridNumberColumn "再次连接。由于它变成了一个字符串,现在JSON可以解析它。

© www.soinside.com 2019 - 2024. All rights reserved.