在JSON响应中搜索关键字

时间:2011-05-24 13:54:41

标签: javascript

{
    "PatientSearchResult": {
        "Patient": [
            {
                "AccountBalanceCalcMethod": 2,
                "AlternatePatientID": 0,
                "AssignmentOfBenifits": 0,
                "CellPhoneNumber1": null,
                "CellPhoneNumber2": null,
                "Citizenship": 0,
                "Credential": 0,
                "DateOfBirth": null,
                "Deceased": 0,
                "DeceasedDate": "/Date(-62135578800000-0500)/",
                "DoesPatientHaveResidentProof": false,
                "DriversLicenseNumber": null,
                "DriversLicenseState": 0,
                "EmailAddress1": null,
                "EmailAddress2": null,
                "Enabled": false,
                "Ethnicity": 0,
                "Firstname": "2914 FirstName",
                "FullName": "2914 FirstName 2914 LastName",
                "Gender": 2,
                "GuarantorID": 0,
                "IsFinancialRisk": false,
                "IsPatient": false,
                "LastName": "2914 LastName",
                "LocalName": null,
                "MaidenName": null,
                "MaritalStatus": 0,
                "MiddleName1": null,
                "MiddleName2": null,
                "MothersMaidenName": null,
                "Nickname": null,
                "NoteText": null,
                "Notes": null,
                "Occupation": null,
                "OriginalPatientID": 0,
                "PagerNumber": null,
                "PersonID": 0,
                "PharmacyName": null,
                "PharmacyNoteID": 0,
                "PhoneNumber1": null,
                "PhoneNumber2": null,
                "Prefix": 0,
                "PrimaryLanguage": 0,
                "PrimaryPhoneNumber": null,
                "PrimaryPhysID": 0,
                "PrimaryWorkPhone": null,
                "Race": 0,
                "ReleaseOfInformation": false,
                "Religion": 0,
                "ResidentialAddress": null,
                "SSN": null,
                "SealedFlagID": 0,
                "SecondaryLanguage": 0,
                "StudentStatusID": 0,
                "Suffix": 0,
                "PatientID": 2914
            },
            {
                "AccountBalanceCalcMethod": 2,
                "AlternatePatientID": 0,
                "AssignmentOfBenifits": 0,
                "CellPhoneNumber1": null,
                "CellPhoneNumber2": null,
                "Citizenship": 0,
                "Credential": 0,
                "DateOfBirth": "/Date(378709200000-0500)/",
                "Deceased": 0,
                "DeceasedDate": "/Date(-62135578800000-0500)/",
                "DoesPatientHaveResidentProof": false,
                "DriversLicenseNumber": null,
                "DriversLicenseState": 0,
                "EmailAddress1": null,
                "EmailAddress2": null,
                "Enabled": false,
                "Ethnicity": 0,
                "Firstname": "4261 FirstName",
                "FullName": "4261 FirstName 4261 LastName",
                "Gender": 2,
                "GuarantorID": 0,
                "IsFinancialRisk": false,
                "IsPatient": false,
                "LastName": "4261 LastName",
                "LocalName": null,
                "MaidenName": null,
                "MaritalStatus": 0,
                "MiddleName1": null,
                "MiddleName2": null,
                "MothersMaidenName": null,
                "Nickname": null,
                "NoteText": null,
                "Notes": null,
                "Occupation": null,
                "OriginalPatientID": 0,
                "PagerNumber": null,
                "PersonID": 0,
                "PharmacyName": null,
                "PharmacyNoteID": 0,
                "PhoneNumber1": null,
                "PhoneNumber2": null,
                "Prefix": 0,
                "PrimaryLanguage": 0,
                "PrimaryPhoneNumber": null,
                "PrimaryPhysID": 0,
                "PrimaryWorkPhone": null,
                "Race": 0,
                "ReleaseOfInformation": false,
                "Religion": 0,
                "ResidentialAddress": null,
                "SSN": null,
                "SealedFlagID": 0,
                "SecondaryLanguage": 0,
                "StudentStatusID": 0,
                "Suffix": 0,
                "PatientID": 4261
            },
            {
                "AccountBalanceCalcMethod": 2,
                "AlternatePatientID": 0,
                "AssignmentOfBenifits": 0,
                "CellPhoneNumber1": null,
                "CellPhoneNumber2": null,
                "Citizenship": 0,
                "Credential": 0,
                "DateOfBirth": "/Date(1136264400000-0500)/",
                "Deceased": 0,
                "DeceasedDate": "/Date(-62135578800000-0500)/",
                "DoesPatientHaveResidentProof": false,
                "DriversLicenseNumber": null,
                "DriversLicenseState": 0,
                "EmailAddress1": null,
                "EmailAddress2": null,
                "Enabled": false,
                "Ethnicity": 0,
                "Firstname": "Bo",
                "FullName": "Bo Ray",
                "Gender": 2,
                "GuarantorID": 0,
                "IsFinancialRisk": false,
                "IsPatient": false,
                "LastName": "Ray",
                "LocalName": null,
                "MaidenName": null,
                "MaritalStatus": 0,
                "MiddleName1": null,
                "MiddleName2": null,
                "MothersMaidenName": null,
                "Nickname": null,
                "NoteText": null,
                "Notes": null,
                "Occupation": null,
                "OriginalPatientID": 0,
                "PagerNumber": null,
                "PersonID": 0,
                "PharmacyName": null,
                "PharmacyNoteID": 0,
                "PhoneNumber1": null,
                "PhoneNumber2": null,
                "Prefix": 0,
                "PrimaryLanguage": 0,
                "PrimaryPhoneNumber": null,
                "PrimaryPhysID": 0,
                "PrimaryWorkPhone": null,
                "Race": 0,
                "ReleaseOfInformation": false,
                "Religion": 0,
                "ResidentialAddress": null,
                "SSN": null,
                "SealedFlagID": 0,
                "SecondaryLanguage": 0,
                "StudentStatusID": 0,
                "Suffix": 0,
                "PatientID": 19369
            },
            {
                "AccountBalanceCalcMethod": 2,
                "AlternatePatientID": 0,
                "AssignmentOfBenifits": 0,
                "CellPhoneNumber1": null,
                "CellPhoneNumber2": null,
                "Citizenship": 0,
                "Credential": 0,
                "DateOfBirth": "/Date(-2192126400000-0400)/",
                "Deceased": 0,
                "DeceasedDate": "/Date(-62135578800000-0500)/",
                "DoesPatientHaveResidentProof": false,
                "DriversLicenseNumber": null,
                "DriversLicenseState": 0,
                "EmailAddress1": null,
                "EmailAddress2": null,
                "Enabled": false,
                "Ethnicity": 0,
                "Firstname": "Mark",
                "FullName": "Mark Noyce",
                "Gender": 2,
                "GuarantorID": 0,
                "IsFinancialRisk": false,
                "IsPatient": false,
                "LastName": "Noyce",
                "LocalName": null,
                "MaidenName": null,
                "MaritalStatus": 0,
                "MiddleName1": null,
                "MiddleName2": null,
                "MothersMaidenName": null,
                "Nickname": null,
                "NoteText": null,
                "Notes": null,
                "Occupation": null,
                "OriginalPatientID": 0,
                "PagerNumber": null,
                "PersonID": 0,
                "PharmacyName": null,
                "PharmacyNoteID": 0,
                "PhoneNumber1": null,
                "PhoneNumber2": null,
                "Prefix": 0,
                "PrimaryLanguage": 0,
                "PrimaryPhoneNumber": null,
                "PrimaryPhysID": 0,
                "PrimaryWorkPhone": null,
                "Race": 0,
                "ReleaseOfInformation": false,
                "Religion": 0,
                "ResidentialAddress": null,
                "SSN": null,
                "SealedFlagID": 0,
                "SecondaryLanguage": 0,
                "StudentStatusID": 0,
                "Suffix": 0,
                "PatientID": 19387
            },
            {
                "AccountBalanceCalcMethod": 2,
                "AlternatePatientID": 0,
                "AssignmentOfBenifits": 0,
                "CellPhoneNumber1": null,
                "CellPhoneNumber2": null,
                "Citizenship": 0,
                "Credential": 0,
                "DateOfBirth": "/Date(-5347800000000-0400)/",
                "Deceased": 0,
                "DeceasedDate": "/Date(-62135578800000-0500)/",
                "DoesPatientHaveResidentProof": false,
                "DriversLicenseNumber": null,
                "DriversLicenseState": 0,
                "EmailAddress1": null,
                "EmailAddress2": null,
                "Enabled": false,
                "Ethnicity": 0,
                "Firstname": "Kevin",
                "FullName": "Kevin Noyce",
                "Gender": 2,
                "GuarantorID": 0,
                "IsFinancialRisk": false,
                "IsPatient": false,
                "LastName": "Noyce",
                "LocalName": null,
                "MaidenName": null,
                "MaritalStatus": 0,
                "MiddleName1": null,
                "MiddleName2": null,
                "MothersMaidenName": null,
                "Nickname": null,
                "NoteText": null,
                "Notes": null,
                "Occupation": null,
                "OriginalPatientID": 0,
                "PagerNumber": null,
                "PersonID": 0,
                "PharmacyName": null,
                "PharmacyNoteID": 0,
                "PhoneNumber1": null,
                "PhoneNumber2": null,
                "Prefix": 0,
                "PrimaryLanguage": 0,
                "PrimaryPhoneNumber": null,
                "PrimaryPhysID": 0,
                "PrimaryWorkPhone": null,
                "Race": 0,
                "ReleaseOfInformation": false,
                "Religion": 0,
                "ResidentialAddress": null,
                "SSN": null,
                "SealedFlagID": 0,
                "SecondaryLanguage": 0,
                "StudentStatusID": 0,
                "Suffix": 0,
                "PatientID": 19388
            },
            {
                "AccountBalanceCalcMethod": 2,
                "AlternatePatientID": 0,
                "AssignmentOfBenifits": 0,
                "CellPhoneNumber1": null,
                "CellPhoneNumber2": null,
                "Citizenship": 0,
                "Credential": 0,
                "DateOfBirth": "/Date(-381697200000-0500)/",
                "Deceased": 0,
                "DeceasedDate": "/Date(-62135578800000-0500)/",
                "DoesPatientHaveResidentProof": false,
                "DriversLicenseNumber": null,
                "DriversLicenseState": 0,
                "EmailAddress1": null,
                "EmailAddress2": null,
                "Enabled": false,
                "Ethnicity": 0,
                "Firstname": "Scott",
                "FullName": "Scott Noyce",
                "Gender": 2,
                "GuarantorID": 0,
                "IsFinancialRisk": false,
                "IsPatient": false,
                "LastName": "Noyce",
                "LocalName": null,
                "MaidenName": null,
                "MaritalStatus": 0,
                "MiddleName1": null,
                "MiddleName2": null,
                "MothersMaidenName": null,
                "Nickname": null,
                "NoteText": null,
                "Notes": null,
                "Occupation": null,
                "OriginalPatientID": 0,
                "PagerNumber": null,
                "PersonID": 0,
                "PharmacyName": null,
                "PharmacyNoteID": 0,
                "PhoneNumber1": null,
                "PhoneNumber2": null,
                "Prefix": 0,
                "PrimaryLanguage": 0,
                "PrimaryPhoneNumber": null,
                "PrimaryPhysID": 0,
                "PrimaryWorkPhone": null,
                "Race": 0,
                "ReleaseOfInformation": false,
                "Religion": 0,
                "ResidentialAddress": null,
                "SSN": null,
                "SealedFlagID": 0,
                "SecondaryLanguage": 0,
                "StudentStatusID": 0,
                "Suffix": 0,
                "PatientID": 19389
            },
            {
                "AccountBalanceCalcMethod": 2,
                "AlternatePatientID": 0,
                "AssignmentOfBenifits": 0,
                "CellPhoneNumber1": null,
                "CellPhoneNumber2": null,
                "Citizenship": 0,
                "Credential": 0,
                "DateOfBirth": "/Date(-445806000000-0500)/",
                "Deceased": 0,
                "DeceasedDate": "/Date(-62135578800000-0500)/",
                "DoesPatientHaveResidentProof": false,
                "DriversLicenseNumber": null,
                "DriversLicenseState": 0,
                "EmailAddress1": null,
                "EmailAddress2": null,
                "Enabled": false,
                "Ethnicity": 0,
                "Firstname": "John",
                "FullName": "John Doe",
                "Gender": 2,
                "GuarantorID": 0,
                "IsFinancialRisk": false,
                "IsPatient": false,
                "LastName": "Doe",
                "LocalName": null,
                "MaidenName": null,
                "MaritalStatus": 0,
                "MiddleName1": null,
                "MiddleName2": null,
                "MothersMaidenName": null,
                "Nickname": null,
                "NoteText": null,
                "Notes": null,
                "Occupation": null,
                "OriginalPatientID": 0,
                "PagerNumber": null,
                "PersonID": 0,
                "PharmacyName": null,
                "PharmacyNoteID": 0,
                "PhoneNumber1": null,
                "PhoneNumber2": null,
                "Prefix": 0,
                "PrimaryLanguage": 0,
                "PrimaryPhoneNumber": null,
                "PrimaryPhysID": 0,
                "PrimaryWorkPhone": null,
                "Race": 0,
                "ReleaseOfInformation": false,
                "Religion": 0,
                "ResidentialAddress": null,
                "SSN": null,
                "SealedFlagID": 0,
                "SecondaryLanguage": 0,
                "StudentStatusID": 0,
                "Suffix": 0,
                "PatientID": 19395
            },
            {
                "AccountBalanceCalcMethod": 2,
                "AlternatePatientID": 0,
                "AssignmentOfBenifits": 0,
                "CellPhoneNumber1": null,
                "CellPhoneNumber2": null,
                "Citizenship": 0,
                "Credential": 0,
                "DateOfBirth": "/Date(-880830000000-0500)/",
                "Deceased": 0,
                "DeceasedDate": "/Date(-62135578800000-0500)/",
                "DoesPatientHaveResidentProof": false,
                "DriversLicenseNumber": null,
                "DriversLicenseState": 0,
                "EmailAddress1": null,
                "EmailAddress2": null,
                "Enabled": false,
                "Ethnicity": 0,
                "Firstname": "Dagwood",
                "FullName": "Dagwood Bumstead",
                "Gender": 2,
                "GuarantorID": 0,
                "IsFinancialRisk": false,
                "IsPatient": false,
                "LastName": "Bumstead",
                "LocalName": null,
                "MaidenName": null,
                "MaritalStatus": 0,
                "MiddleName1": null,
                "MiddleName2": null,
                "MothersMaidenName": null,
                "Nickname": null,
                "NoteText": null,
                "Notes": null,
                "Occupation": null,
                "OriginalPatientID": 0,
                "PagerNumber": null,
                "PersonID": 0,
                "PharmacyName": null,
                "PharmacyNoteID": 0,
                "PhoneNumber1": null,
                "PhoneNumber2": null,
                "Prefix": 0,
                "PrimaryLanguage": 0,
                "PrimaryPhoneNumber": null,
                "PrimaryPhysID": 0,
                "PrimaryWorkPhone": null,
                "Race": 0,
                "ReleaseOfInformation": false,
                "Religion": 0,
                "ResidentialAddress": null,
                "SSN": null,
                "SealedFlagID": 0,
                "SecondaryLanguage": 0,
                "StudentStatusID": 0,
                "Suffix": 0,
                "PatientID": 19414
            },
            {
                "AccountBalanceCalcMethod": 2,
                "AlternatePatientID": 0,
                "AssignmentOfBenifits": 0,
                "CellPhoneNumber1": null,
                "CellPhoneNumber2": null,
                "Citizenship": 0,
                "Credential": 0,
                "DateOfBirth": null,
                "Deceased": 0,
                "DeceasedDate": "/Date(-62135578800000-0500)/",
                "DoesPatientHaveResidentProof": false,
                "DriversLicenseNumber": null,
                "DriversLicenseState": 0,
                "EmailAddress1": null,
                "EmailAddress2": null,
                "Enabled": false,
                "Ethnicity": 0,
                "Firstname": "Clyde",
                "FullName": "Clyde Barrow",
                "Gender": 2,
                "GuarantorID": 0,
                "IsFinancialRisk": false,
                "IsPatient": false,
                "LastName": "Barrow",
                "LocalName": null,
                "MaidenName": null,
                "MaritalStatus": 0,
                "MiddleName1": null,
                "MiddleName2": null,
                "MothersMaidenName": null,
                "Nickname": null,
                "NoteText": null,
                "Notes": null,
                "Occupation": null,
                "OriginalPatientID": 0,
                "PagerNumber": null,
                "PersonID": 0,
                "PharmacyName": null,
                "PharmacyNoteID": 0,
                "PhoneNumber1": null,
                "PhoneNumber2": null,
                "Prefix": 0,
                "PrimaryLanguage": 0,
                "PrimaryPhoneNumber": null,
                "PrimaryPhysID": 0,
                "PrimaryWorkPhone": null,
                "Race": 0,
                "ReleaseOfInformation": false,
                "Religion": 0,
                "ResidentialAddress": null,
                "SSN": null,
                "SealedFlagID": 0,
                "SecondaryLanguage": 0,
                "StudentStatusID": 0,
                "Suffix": 0,
                "PatientID": 19415
            },
            {
                "AccountBalanceCalcMethod": 2,
                "AlternatePatientID": 0,
                "AssignmentOfBenifits": 0,
                "CellPhoneNumber1": null,
                "CellPhoneNumber2": null,
                "Citizenship": 0,
                "Credential": 0,
                "DateOfBirth": "/Date(-249678000000-0500)/",
                "Deceased": 0,
                "DeceasedDate": "/Date(-62135578800000-0500)/",
                "DoesPatientHaveResidentProof": false,
                "DriversLicenseNumber": null,
                "DriversLicenseState": 0,
                "EmailAddress1": null,
                "EmailAddress2": null,
                "Enabled": false,
                "Ethnicity": 0,
                "Firstname": "Fred",
                "FullName": "Fred Flintstone",
                "Gender": 2,
                "GuarantorID": 0,
                "IsFinancialRisk": false,
                "IsPatient": false,
                "LastName": "Flintstone",
                "LocalName": null,
                "MaidenName": null,
                "MaritalStatus": 0,
                "MiddleName1": null,
                "MiddleName2": null,
                "MothersMaidenName": null,
                "Nickname": null,
                "NoteText": null,
                "Notes": null,
                "Occupation": null,
                "OriginalPatientID": 0,
                "PagerNumber": null,
                "PersonID": 0,
                "PharmacyName": null,
                "PharmacyNoteID": 0,
                "PhoneNumber1": null,
                "PhoneNumber2": null,
                "Prefix": 0,
                "PrimaryLanguage": 0,
                "PrimaryPhoneNumber": null,
                "PrimaryPhysID": 0,
                "PrimaryWorkPhone": null,
                "Race": 0,
                "ReleaseOfInformation": false,
                "Religion": 0,
                "ResidentialAddress": null,
                "SSN": null,
                "SealedFlagID": 0,
                "SecondaryLanguage": 0,
                "StudentStatusID": 0,
                "Suffix": 0,
                "PatientID": 19420
            }
        ]
    }
}

这是我得到的JSON响应。我在这个回复中搜索第一个名字。

var json = JSON.parse(theResponse);
 for(var i=0; i<json.length; i++) {
   if(json.PatientSearchResult.Patient[i].Firstname === search.value) {
            /// Go a head
    }

这里search.value包含我要搜索的关键字。这是在JSON响应中搜索FirstName的方法。

2 个答案:

答案 0 :(得分:2)

此行错误

for(var i=0; i<json.length; i++) {

您想查看数组长度

var json = JSON.parse(theResponse);
var patients = json.PatientSearchResult.Patient;
for(var i=0; i<patients.length; i++) {
    if(patients[i].Firstname === search.value) {
        /// Go a head
    }
}

答案 1 :(得分:0)

John Cooper - 使用DefiantJS(http://defiantjs.com),您可以使用XPath搜索JSON结构,如下所示:

var data = {
   "PatientSearchResult": {
      "Patient": [
         { "Firstname": "Bo",      "FullName": "Bo Ray",           "PatientID": 19369 },
         { "Firstname": "Mark",    "FullName": "Mark Noyce",       "PatientID": 19387 },
         { "Firstname": "Kevin",   "FullName": "Kevin Noyce",      "PatientID": 19388 },
         { "Firstname": "Scott",   "FullName": "Scott Noyce",      "PatientID": 19389 },
         { "Firstname": "John",    "FullName": "John Doe",         "PatientID": 19395 },
         { "Firstname": "Dagwood", "FullName": "Dagwood Bumstead", "PatientID": 19414 },
         { "Firstname": "Clyde",   "FullName": "Clyde Barrow",     "PatientID": 19415 },
         { "Firstname": "Fred",    "FullName": "Fred Flintstone",  "PatientID": 19420 }
      ]
   }
},
res = JSON.search( data, '//*[Firstname]' );

看看这个小提琴:
http://jsfiddle.net/hbi99/W4cL4/

我已删除了som JSON数据,以便于查看代码。使用完整的JSON数据,它的工作原理相同。

使用XPath评估程序熟悉XPath:
http://www.defiantjs.com/#xpath_evaluator