如何在JSON中重命名密钥

问题描述 投票:-2回答:1

这是我的xml

<?xml version="1.0" encoding="utf-8"?>
<p:Order xmlns:p="http://no.lyse.ikt.altisalg.Order" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="filename.xsd" source="AltiSalg 2.4.4-IB-154-IB-154 (154)"><p:Customer><p:OrderId></p:OrderId>
<p:FirstName></p:FirstName>
<p:LastName></p:LastName>
<p:EmailAddress></p:EmailAddress>
<p:BirthDate></p:BirthDate>
<p:CellularPhone></p:CellularPhone>
<p:City></p:City>
<p:Country></p:Country>
<p:PostalCode></p:PostalCode>
<p:StreetAddress></p:StreetAddress>
<p:PartnerId></p:PartnerId>
<p:CommunicationPreferences><p:Phone></p:Phone>
<p:Email></p:Email>
<p:Mail></p:Mail>
<p:SMS></p:SMS>
</p:CommunicationPreferences>
<p:ServiceAgreement><p:AgreementType></p:AgreementType>
<p:AgreementStartDate></p:AgreementStartDate>
<p:AgreementStatus></p:AgreementStatus>
<p:Comment></p:Comment>
<p:ListOfAssets><p:Asset><p:ProductPartNumber></p:ProductPartNumber>
<p:Comments></p:Comments>
</p:Asset>
<p:Asset><p:ProductPartNumber></p:ProductPartNumber>
<p:Comments></p:Comments>
</p:Asset>
<p:Asset><p:ProductPartNumber></p:ProductPartNumber>
<p:Comments></p:Comments>
</p:Asset>
<p:Asset><p:ProductPartNumber></p:ProductPartNumber>
<p:Comments></p:Comments>
</p:Asset>
<p:Asset><p:ProductPartNumber></p:ProductPartNumber>
<p:Comments></p:Comments>
</p:Asset>
<p:Asset><p:ProductPartNumber></p:ProductPartNumber>
<p:Comments></p:Comments>
</p:Asset>
</p:ListOfAssets>
</p:ServiceAgreement>
</p:Customer>
</p:Order>

当我试图转换成xmltojson时,我得到了以下屏幕截图键。我需要从所有键中删除p :.由于p:即将来临,我无法访问密钥。当我试图检查在线转换其工作,而不是从我的代码中删除。我正在使用节点并使用“xml-to-json-promise”模块

https://prnt.sc/hvzrzf

注意:我无法对XML文件进行任何更改。

json node.js xml xml-parsing converter
1个回答
0
投票

xml-to-json-promise基于xml2js包(它本身基于sax-js)。我使用xml2js并自己宣传,但诀窍是options.tagNameProcessors。了解他们in the docs

像这样使用它:

const prefixMatch = new RegExp(/(?!xmlns)^.*:/)
function stripPrefix(str) {
  return str.replace(prefixMatch, '');
}
convert.xmlDataToJSON(xml, {
  tagNameProcessors: [stripPrefix]
  // other options too
})

这包含在xml2js包中,可能需要如下:

const {stripPrefix} = require('xml2js/lib/processors')

无论如何,有你去!处理标记名称以重命名密钥(删除任何先前的前缀)。

© www.soinside.com 2019 - 2024. All rights reserved.