我正在尝试将数据从我们的系统接口到第三方系统,该系统接受标准json格式的数据,并且只接受指定的格式。我们的系统以xml格式提供输出,我需要xsd模式来将数据从xml转换为json格式。
以下是第三方系统接受的示例标准JSON格式
{
"checkups":
[
{
"checkupId" : " 20 " ,
"jobTitle": " Busisness Analyst, Project Management " ,
"requisitionNumber": " F834234 " ,
"subAccount":{
"email": "ramesh.rathod@uic.com" ,
"firstName": " Ramesh " ,
"lastName": " Rathod " ,
"phone": " +1 (189) 234-1122 x11-1275 "
}
"candidate":{
"email": "srujan.rao@gmail.com" ,
"firstName": " srujan " ,
"lastName": " rao "
}
}
]
}
我已经尝试过编写模式来获取上面的json输出格式,但我没有得到所需格式的json输出,其中顶部({“checkups”:[{)缺失并且在最后一个底部关闭括号part(}}]})缺失。
我尝试过不同的方式,但似乎没有任何结果。
以下是我的xml输出,需要使用xsd schema转换为json格式。
<wd:Report_Data xmlns:wd="urn:com.workday.report/RPT_Checkster_Outbound">
<wd:Report_Entry>
<wd:Checkupid>20</wd:Checkupid>
<wd:JobTitle>Busisness Analyst, Project Management</wd:JobTitle>
<wd:ReqID>F834234</wd:ReqID>
<wd:Recruiter>
<wd:InitEmail wd:Descriptor="ramesh.rathod@uic.com"></wd:InitEmail>
<wd:p.InitFirstName>Ramesh</wd:p.InitFirstName>
<wd:p.InitLastName>Rathod</wd:p.InitLastName>
<wd:p.Phone wd:Descriptor="+1 (189) 234-1122 x11-1275">
<wd:ID wd:type="WID">38fea2b75a77010c76933e693e57d3eb</wd:ID>
</wd:p.Phone>
</wd:Recruiter>
<wd:Active_Candidates>
<wd:CandEmail>srujan.rao@gmail.com</wd:CandEmail>
<wd:p.FirstName>srujan</wd:p.FirstName>
<wd:p.LastName>rao</wd:p.LastName>
</wd:Active_Candidates>
虽然我的xml中没有subaccount属性,但无论如何我们可以按照上面的示例json格式指定输出吗?
我知道中间级别的xsd架构,但我不是xsd架构的优秀专家,因此我需要xsd架构专家的帮助才能获得所需及以上指定的json格式的输出。
非常感谢对此的投入。
如果需要,请告诉我任何其他信息。
谢谢, Jithendra。
答案 0 :(得分:0)
我不知道为什么你认为XSD Schema可以帮助解决这个问题。可能有一些模式处理器包含用于XML到JSON转换的工具,但这并不是模式处理器意味着它的一部分。
有很多用于XML-to-JSON转换的库,它们在输出格式上给你的控制程度有很大差异(有很多不同的方法可以将XML转换为JSON,就像工具一样 - 它们都会产生不同的输出。)
因为您的输入和输出不是非常密切相关(例如wd:p.InitFirstName
需要变成firstName
),所以我建议XSLT来完成这项工作。您可以使用XSLT 1或2手动生成JSON输出,也可以利用XSLT 3.0附带的内置JSON输出序列化。
在XSLT 3.0中,我会分两个阶段完成。首先是一个常规的XML-to-XML转换,它将您的输入转换为如下所示:
<map xmlns="http://www.w3.org/2005/xpath-functions">
<array key="checkups">
<map>
<string key="checkupId">20</string>
<string key="jobTitle">Busisness Analyst, Project Management</string>
<string key="requisitionNumber">F834234</string>
<map key="subAccount">
<string key="email">ramesh.rathod@uic.com</string>
etc
然后调用xml-to-json()
函数将其转换为JSON。
第一阶段可以使用一组模板规则来完成,例如:
<xsl:template match="wd:p.InitFirstName">
<string key="firstName">{.}</string>
</xsl:template>
或
<xsl:template match="wd:subAccount">
<map key="subAccount">
<xsl:apply-templates/>
</map>
</xsl:template>