【发布时间】:2021-01-03 16:40:36
【问题描述】:
我得到了一些数据,我必须在不同级别解析这些数据以获取它并在其格式中保持相似的结构。我在用于当前项目的 Node 环境(Google Cloud)中使用 TypeScript。我对这种语言和环境很陌生,我对语言功能方面的指导感到恶心,而不是在数据处理部分。
我输入的数据是 XML 格式,显示如下:
<item>
<key xsi:type="xsd:string">intermedite_key</key>
<value xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">Key_parse_first_level_1</key>
<value xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">intermedite_key</key>
<value xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">Key_parse_second_level_1</key>
<value xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:int">intermedite_key</key>
<value xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">Key_1</key>
<value xsi:type="xsd:string">DataToParse</value>
</item>
<item>
<key xsi:type="xsd:string">Key_2</key>
<value xsi:type="xsd:string">DataToParse</value>
</item>
</value>
</item>
</value>
</item>
<item>
<key xsi:type="xsd:string">Key_parse_second_level_2</key>
<value xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:int">intermedite_key</key>
<value xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">Key_parse_third_level_1</key>
<value xsi:type="xsd:string">DataToFetch</value>
</item>
<item>
<key xsi:type="xsd:string">Key_parse_third_level_2</key>
<value xsi:type="xsd:string">DataToFetch</value>
</item>
</item>
</value>
</item>
</value>
</item>
</value>
</item>
</value>
</item>
<item>
<key xsi:type="xsd:string">Key_parse_first_level_2>
<value xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">intermedite_key</key>
<value xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">Key_parse_second_level_1</key>
<value xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:int">intermedite_key</key>
<value xsi:type="ns2:Map">
<item>
<key xsi:type="xsd:string">Key_parse_third_level_1</key>
<value xsi:type="xsd:string">DataToFetch</value>
</item>
<item>
<key xsi:type="xsd:string">Key_parse_third_level_2</key>
<value xsi:type="xsd:string">DataToFetch</value>
</item>
</value>
</item>
</value>
</item>
</value>
</item>
</value>
</item>
<item>
... Other items
</item>
</value>
</item>
我已经设法编写了这段代码,它可以解析第一级但在第二级:
/*Converts the XMl into a an object with 'fast-xml-parser'*/
const getRawResponseJSON = parser.parse(XMLDataToConvert);
const FisrtLevel = getRawResponseJSON['item']['value']['item']
Object(FisrtLevel).forEach((FisrtLevelValues: any) => {
const SecondLevel = Object.entries(FisrtLevelValues.value.item.value.item)
SecondLevel.forEach((SecondLevelValues: any) => {
console.log("value - " + SecondLevelValues);
});
});
这些是 Key_parse_second_level_1 的控制台输出:
value - 0,[object Object]
value - 1,[object Object]
对于 Key_parse_second_level_2:
value - value,[object Object]
似乎 Key_parse_second_level_1 值与 Key_parse_second_level_2 没有“对齐”,当我更深入时,我没有键和值的预期结果。因此我有不同的问题,在这种情况下使用 Object 类是一个好主意(我被诱惑将它们用于键和条目方法)?使用 Array 类会更好吗?
【问题讨论】:
标签: node.js json typescript parsing