在JavaScript中提取JSON XPath
我有下面的JSON数据。我想提取家庭电话号码。我不想要工作电话号码。你能为我写一个JavaScript XPath表达式吗在JavaScript中提取JSON XPath,javascript,arrays,json,xpath,xquery,Javascript,Arrays,Json,Xpath,Xquery,我有下面的JSON数据。我想提取家庭电话号码。我不想要工作电话号码。你能为我写一个JavaScript XPath表达式吗 { "Response":{ "Details":{ "MemberDetails":[ { "DateOfBirth":"1969-04-03T00:00:00", "FirstName":"MIRIDA", "Gender
{
"Response":{
"Details":{
"MemberDetails":[
{
"DateOfBirth":"1969-04-03T00:00:00",
"FirstName":"MIRIDA",
"Gender":"M",
"LastName":"MEARES",
"MasterId":"rrrrr",
"PhoneList":[
{
"number":"7088739304",
"type":"Home"
},
{
"number":"7088739304",
"type":"Work"
}
],
"PlatformPointerList":[
{
"application":"",
"keyType":"AKAName",
"keyValue":"xxxxxx",
"source":"WPP"
},
{
"application":"",
"keyType":"xxxx",
"keyValue":"xxx",
"source":"xxxx"
},
{
"application":"",
"keyType":"xxxxx",
"keyValue":"xxxxxx",
"source":"ODS"
},
{
"application":"",
"keyType":"PERSONID",
"keyValue":"xxxxx",
"source":"EM"
},
{
"application":"",
"keyType":"PERSONID",
"keyValue":"xxxxxx",
"source":"WPP"
}
],
"MemberId":"xxxxx",
"MemberDependentCode":"xxx",
"MemberSource":"xx"
}
]
},
"MetaData":{
"CorrelationId":"undefined"
},
"Status":{
"type":"OK",
"code":"200",
}
}
}
在Javascript中没有使用XPath解析JSON结构的本机方法,因此需要使用某种库 由于问题中包含了JQuery标记,JQuery JSONPath将是一个不错的选择: 使用该选项,您的查询将是:
var path = $.JSONPath({data: JSONOut});
homePhoneDetails = path.query("$.Response.Details.MemberDetails[0].PhoneList[?(@.type == 'Home')].number");
请参见此处的JS Fiddle以获得一个工作示例:使用Saxon JS库,您可以使用XPath 3.1表达式
map:find(parse-json($input), "PhoneList")?*[?type="Home"]?number
var respMemberDetails=JSONOut[“Response”][“Details”][“MemberDetails”];var PhoneDetails=respMemberDetails[0][“电话列表”];var homePhoneDetails=PhoneDetails[0][“number”];我使用上面的代码提取第一个电话号码。但是这个号码可以是家庭号码,也可以是工作号码。因此,我想确保我只提取家庭电话号码。因此,每当您提取正确的电话号码时,请检查类型是否为家庭或工作。。。您的type属性将帮助您获得正确的电话号码lpful note:对于所有问题,读者都希望看到对手头的问题应用一些事先的努力,这样他们就知道他们没有被要求做免费工作。对于XPath查询、SQL查询和正则表达式来说尤其如此,它们各自的标记中都充满了零努力问题。您是否可以先尝试编辑@user1117723?