如何将html textarea值转换为json?

时间:2017-01-21 15:36:39

标签: javascript html json node.js

客户端

.. some form
<textarea name="data"></textarea>

我会输入textarea,如下所示

{title: 'Hello one!', author: 'someone'}
{title: 'Hello two!', author: 'mygf'}
{title: 'Hello three!', author: 'darthvader'}

最后提交表格,

服务器

服务器将超越

'{title: \'Hello one!\', author: \'someone\'}\r\n
{title: \'Hello two!\', author: \'mygf\'}\r\n
{title: \'Hello three!\', author: \'darthvader\'}\r\n'

此时如何转换它?

我试过了:

 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
 }

如何正确制作objectdarray?

3 个答案:

答案 0 :(得分:2)

你拥有的是无效的JSON。如果您使用valid 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]);
}

如果你想允许无效的JSON,你需要分析字符串并弄清楚键和位置的位置。值是,并将它们添加到新创建的对象。

答案 1 :(得分:-1)

首先,它不是JSON。它只是javascript中的一些数据数组。为什么?因为JSON在每个键和值中使用引号,如

{"key":"value"}

第二,帮助减少编码。您可以添加隐藏的输入并将其设置为textarea值。看看这段代码:

<textarea id="txta" name="txta">
<input type="hidden" name="txtahid" id="txtahid" value="">
<script>
    setInterval(function(){
        document.getElementById("txtahid").value = document.getElementById("txta").value
    },200);
</script>

希望它可以帮到你。

答案 2 :(得分:-2)

<textarea id = "textData" name="data"></textarea>

let textdata = $('#textData').value;

从客户端发送文本时 你可以用

let res = JSON.stringify(textdata);

并在获取数据时

var dataArray = JSON.parse(req.body.data);

所以textArea数据保持不变。