如何在JSON中重命名密钥

如何在JSON中重命名密钥,json,node.js,xml,xml-parsing,converter,Json,Node.js,Xml,Xml Parsing,Converter,这是我的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:

这是我的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:即将到来,我无法访问密钥。当我试图在线检查时,转换它的工作状态,而不是从我的代码中删除它。我正在使用node和“xml-to-json-promise”模块


注意:我无法更改XML文件中的任何内容

xml-to-json-promise
基于
xml2js
包(其本身基于
sax-js
)。我使用
xml2js
,并亲自承诺,但诀窍在于
选项.tagNameProcessors
。了解他们

像这样使用它:

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')

不管怎样,好了!处理标记名以重命名密钥(删除任何先前的前缀)。

一个快速解决方案可以是将出现的
“p:
替换为
。我会在截图中加入“避免从实际内容中删除文本。例如:
船:Lousiana
。或者甚至可以在源材料中替换