如何将html文本区域值转换为json?

ton*_*on1 3 html javascript json node.js

客户

.. some form
<textarea name="data"></textarea>
Run Code Online (Sandbox Code Playgroud)

我将在文本区域中输入如下内容

{title: 'Hello one!', author: 'someone'}
{title: 'Hello two!', author: 'mygf'}
{title: 'Hello three!', author: 'darthvader'}
Run Code Online (Sandbox Code Playgroud)

最后提交表格,

服务器

服务器将得到上面的像

'{title: \'Hello one!\', author: \'someone\'}\r\n
{title: \'Hello two!\', author: \'mygf\'}\r\n
{title: \'Hello three!\', author: \'darthvader\'}\r\n'
Run Code Online (Sandbox Code Playgroud)

此时我该如何转换呢?

我试过:

 var dataArray = req.body.data.split('\r\n');
 for (var i=0; i< dataArray.length; i++){
     console.log(dataArray[i].title)  // err because dataArray[i] is not obj
 }
Run Code Online (Sandbox Code Playgroud)

如何正确制作objectdarray?

sky*_*000 5

您拥有的不是有效的 JSON。如果您使用有效的 JSON(用双引号括起来的键和字符串值),那么您可以简单地使用JSON.parse()

var data = '{"title": "Hello one!", "author": "someone"}\r\n{"title": "Hello two!", "author": "mygf"}\r\n{"title": "Hello three!", "author": "darthvader"}';
var dataArray = data.split('\r\n');

for (var i=0; i<dataArray.length; i++){
  dataArray[i] = JSON.parse(dataArray[i]);
  console.log(dataArray[i]);
}
Run Code Online (Sandbox Code Playgroud)

如果您想允许无效的 JSON,则需要分析字符串并找出键和值的位置,并将它们添加到新创建的对象中。