我有一个包含对象的js变量。我正在使用jquery将该对象中的数据传递给html <textarea>
。我也将我的变量传递给JSON.stringify
,所以代码看起来像这样:
$("#textarea1").val(JSON.stringify(myVarData, null, "\t"));
问题是双重的。
<textarea>
中,数据用大括号{}
括起来,因为它仍然是JSON格式 - 如何在将它们发送到<textarea>
之前删除它们?基本上是纯文本。数据格式正确为
{ "property":value,
"property":value,
"property":value }
如果我有简单的数据,这没关系,但在其中一个属性中,我有一个看起来像这样的值:
"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。该解决方案提出了我已经在使用的内容。
答案 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,'')
强>