简体   繁体   English

如何将字符串转换为 javascript 中的 Object 数组

[英]How to convert String in to Object Array in javascript

I am getting response in a string array like this.我在这样的字符串数组中得到响应。

 {"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"}]}

I have to make in to array object.我必须进入数组 object。 Any possible idea how to make it.任何可能的想法如何制作。

Here is what I am doing but no luck.这是我正在做的,但没有运气。

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;
}, {});

well check this out看看这个

One simple code to fix your problems一个简单的代码来解决你的问题

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)

and Data_object is the object you are looking for并且 Data_object 是您正在寻找的 object

you see the villain here is the formatGridNumberColumn which in not qouted " ".你看到这里的恶棍是格式GridNumberColumn,它没有被引用“”。 So the parsed result can never be a string.所以解析的结果永远不能是字符串。

Alone the formatGridNumberColumn is foreign to javascript.单独的 formatGridNumberColumn 对 javascript 来说是陌生的。

for that reason I split the string by formatGridNumberColumn and joind it again by "formatGridNumberColumn".出于这个原因,我通过 formatGridNumberColumn 拆分字符串并通过“formatGridNumberColumn”再次加入它。 As it beacame a string now JSON can parse it.因为它现在变成了一个字符串 JSON 可以解析它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM