在JavaScript中提取JSON 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

我有下面的JSON数据。我想提取家庭电话号码。我不想要工作电话号码。你能为我写一个JavaScript XPath表达式吗

{
   "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?