简体   繁体   English

将冒号分隔的字符串解析为Node / Javascript中的JSON

[英]Parsing a colon-separated string into JSON in Node/Javascript

I'm working on a Node server, and I used pdftk to extract field data from a PDF to be injected with form data. 我在节点服务器上工作,我使用pdftk从PDF中提取字段数据,以注入表单数据。

I'm trying to get a JSON object of Field Names to iterate over, but I can't seem to get it right. 我正在尝试获取“字段名称”的JSON对象以进行迭代,但似乎无法正确完成。 It will likely need to be a loop, because it will change based what fields are in the PDF. 它可能需要循环,因为它将根据PDF中的字段进行更改。

This is the string I have from the output. 这是我从输出中得到的字符串。

---
FieldType: Text
FieldName: topmostSubform[0].Page1[0].p1-t17[0]
FieldFlags: 8388608
FieldValue:
FieldJustification: Center
FieldMaxLength: 10
---
FieldType: Text
FieldName: topmostSubform[0].Page1[0].p1-t20[0]
FieldFlags: 8388608
FieldValue:
FieldJustification: Center
FieldMaxLength: 10
---
FieldType: Button
FieldName: topmostSubform[0].Page1[0].p1-cb7[0]
FieldFlags: 0
FieldValue:
FieldJustification: Left
FieldStateOption: 1
FieldStateOption: Off
---
FieldType: Text
FieldName: topmostSubform[0].Page1[0].p1-t38[0]
FieldFlags: 8388608
FieldValue:
FieldJustification: Center
---
FieldType: Text
FieldName: topmostSubform[0].Page1[0].p1-t50[0]
FieldFlags: 8388608
FieldValue:
FieldJustification: Left

Would you recommend regex? 您会推荐正则表达式吗? What is the best way to go about this problem? 解决此问题的最佳方法是什么?

Use split repeatedly to break it down into its components: 反复使用split将其分解为各个部分:

 var input = '---\\n\\ FieldType: Text\\n\\ FieldName: topmostSubform[0].Page1[0].p1-t17[0]\\n\\ FieldFlags: 8388608\\n\\ FieldValue:\\n\\ FieldJustification: Center\\n\\ FieldMaxLength: 10\\n\\ ---\\n\\ FieldType: Text\\n\\ FieldName: topmostSubform[0].Page1[0].p1-t20[0]\\n\\ FieldFlags: 8388608\\n\\ FieldValue:\\n\\ FieldJustification: Center\\n\\ FieldMaxLength: 10\\n\\ ---\\n\\ FieldType: Button\\n\\ FieldName: topmostSubform[0].Page1[0].p1-cb7[0]\\n\\ FieldFlags: 0\\n\\ FieldValue:\\n\\ FieldJustification: Left\\n\\ FieldStateOption: 1\\n\\ FieldStateOption: Off\\n\\ ---\\n\\ FieldType: Text\\n\\ FieldName: topmostSubform[0].Page1[0].p1-t38[0]\\n\\ FieldFlags: 8388608\\n\\ FieldValue:\\n\\ FieldJustification: Center\\n\\ ---\\n\\ FieldType: Text\\n\\ FieldName: topmostSubform[0].Page1[0].p1-t50[0]\\n\\ FieldFlags: 8388608\\n\\ FieldValue:\\n\\ FieldJustification: Left'; var fields = []; var field_strings = input.split(/[\\r\\n]*---[\\r\\n]*/); for (var i = 0; i < field_strings.length; i++) { if (field_strings[i] == '') { // Skip blank field at beginning continue; } var obj = {}; var props_strings = field_strings[i].split('\\n'); for (var j = 0; j < props_strings.length; j++) { var keyvalue = props_strings[j].split(':'); obj[keyvalue[0]] = keyvalue[1].trim(); } fields.push(obj); } console.log(fields); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM