使用 js/jquery 将 JSON 字符串格式化为文本区域中的可读格式
Format JSON string using js/jquery to readable format in textarea
我有一个包含对象的 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
中只选择我想要的?我尝试在 stringify
之后使用 JSON.parse
但得到的结果是 [object Object]
。
注意 这不是 this 的副本,因为该问题是关于将 对象 复制到文本框.在我的问题的一部分 - 我想要大括号中的数据 - 不再是 JSON。该解决方案提出了我已经在使用的方法。
1) 可以使用javascript substring 方法去掉大括号{}
例如:JSON.stringify(myVarData).substring(1,JSON.stringify(myVarData).length-1)
2) 要在值对象中选择 属性,select 通过父对象解析 属性 然后执行 stringify
例如:打印第一个主题的标记
JSON.stringify(myVarData.report_data.subjects[0].标记)
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,'')
我有一个包含对象的 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
中只选择我想要的?我尝试在 stringify
之后使用 JSON.parse
但得到的结果是 [object Object]
。
注意 这不是 this 的副本,因为该问题是关于将 对象 复制到文本框.在我的问题的一部分 - 我想要大括号中的数据 - 不再是 JSON。该解决方案提出了我已经在使用的方法。
1) 可以使用javascript substring 方法去掉大括号{}
例如:JSON.stringify(myVarData).substring(1,JSON.stringify(myVarData).length-1)
2) 要在值对象中选择 属性,select 通过父对象解析 属性 然后执行 stringify
例如:打印第一个主题的标记 JSON.stringify(myVarData.report_data.subjects[0].标记)
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,'')