使用js / jquery将JSON字符串格式化为textarea

时间:2018-04-10 06:27:54

标签: javascript jquery json stringify

我有一个包含对象的js变量。我正在使用jquery将该对象中的数据传递给html <textarea>。我也将我的变量传递给JSON.stringify,所以代码看起来像这样:

$("#textarea1").val(JSON.stringify(myVarData, null, "\t"));

问题是双重的。

  1. <textarea>中,数据用大括号{}括起来,因为它仍然是JSON格式 - 如何在将它们发送到<textarea>之前删除它们?基本上是纯文本。
  2. 数据格式正确为

    { "property":value, 
      "property":value,
      "property":value }
    
  3. 如果我有简单的数据,这没关系,但在其中一个属性中,我有一个看起来像这样的值:

    "report_data":"{"subjects":[{"subject_name":"ENGLISH","parent_subject_name":null,"teacher_id":39,"initials":"A.A.F","use_for_grading":true,"marks":{"MID-TERM 1 2018":{"mark":87,"grade_weight":100,"grade":"A"}},"overall_mark":"87","overall_grade":"A","remarks":"Excellent"},{"subject_name":"MATHEMATICS","parent_subject_name":null,"teacher_id":40,"initials":"B.K.K","use_for_grading":true,"marks":{"MID-TERM 1 2018":{"mark":80,"grade_weight":100,"grade":"A"}},"overall_mark":"80","overall_grade":"A","remarks":"Excellent"},
    

    如何将此value数据格式化为易于阅读,如上面的(1)所示?是否可以从value中仅选择我想要的内容?我尝试在JSON.parse之后使用stringify,但结果是[object Object]

    注意这不是this的重复,因为该问题涉及将对象复制到文本框。在我的问题的第一部分 - 我想要大括号中的数据 - 这不再是JSON。该解决方案提出了我已经在使用的内容。

2 个答案:

答案 0 :(得分:1)

1)您可以使用javascript substring方法删除大括号{}

例如:JSON.stringify(myVarData).substring(1,JSON.stringify(myVarData)。长度-1)

2)要在值对象中选择属性,请通过解析父对象选择属性,然后执行stringify

例如:打印第一个主题的标记      JSON.stringify(myVarData.report_data.subjects [0] .marks)

答案 1 :(得分:1)

var a = {"report_data":{"subjects":[{"subject_name":"ENGLISH","parent_subject_name":null,"teacher_id":39,"initials":"A.A.F","use_for_grading":true,"marks":{"MID-TERM 1 2018":{"mark":87,"grade_weight":100,"grade":"A"}},"overall_mark":"87","overall_grade":"A","remarks":"Excellent"},{"subject_name":"MATHEMATICS","parent_subject_name":null,"teacher_id":40,"initials":"B.K.K","use_for_grading":true,"marks":{"MID-TERM 1 2018":{"mark":80,"grade_weight":100,"grade":"A"}},"overall_mark":"80","overall_grade":"A","remarks":"Excellent"}]}}
console.log(JSON.stringify(a).replace(/[\[\]']+/g,'').replace(/[\{\}']+/g,''))
var final = JSON.stringify(a).replace(/[\[\]']+/g,'').replace(/[\{\}']+/g,'');
$("#textarea1").val(JSON.stringify(final, null, "\t"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<body>
<div id = "textarea1"></div>
</body>
</html>

快速优化的解决方案可以使用regular expression

无需在这里循环

只需使用,

<强> JSON.stringify(myVarData).replace(/[\[\]']+/g,'').replace(/[\{\}']+/g,'')