2014-06-16 1 views
-1

Je rencontre des problèmes lors de l'utilisation de la règle "extraire des données" pour des résultats JSON imbriqués plus gros. Comment est-ce que j'écrirais ceci dans la politique d'extraction de données d'apigée? En particulier, je suis intéressé par les champs npi, nom, prénom et adresse professionnelle. Merci.JSON imbriqué - Politique de données d'extraction

{ 
"meta": { 
    "rowCount": 1 
}, 
"result": [ 
    { 
     "npi": 1671836487, 
     "type": "individual", 
     "last_name": "HUTTER", 
     "first_name": "JOHN", 
     "name_prefix": "MR.", 
     "credential": "MD", 
     "business_address": { 
      "address_line": "1MAINSTREET", 
      "city": "HARTFORD", 
      "state": "CT", 
      "zip": "06106", 
      "country_code": "US", 
      "phone": "8605551212", 
      "fax": "8605551212" 
     }, 
     "practice_address": { 
      "address_line": "1MAINST", 
      "city": "HARTFORD", 
      "state": "CT", 
      "zip": "06106", 
      "country_code": "US", 
      "phone": "8605551212", 
      "fax": "8605551212" 
     }, 
     "enumeration_date": "2013-04-03T00: 00: 00.000Z", 
     "last_update_date": "2013-04-03T00: 00: 00.000Z", 
     "gender": "male", 
     "provider_details": [ 
      { 
       "healthcare_taxonomy_code": "101Y00000X", 
       "license_number": "002295", 
       "taxonomy_switch": "yes" 
      } 
     ], 
     "sole_proprietor": "no" 
    } 
] 

}

Répondre

1

Assurez-vous que votre tête de type de contenu est défini à l'application/JSON si l'option JSONPath dans les travaux politiques ExtractVariable.

est ici un exemple de politique pour extraire ci-dessus (vérifié dans mon propre système):

<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1"> 
    <DisplayName>Extract Variables 1</DisplayName> 
    <FaultRules/> 
    <Properties/> 

    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> 
    <JSONPayload> 
    <Variable name="result"> 
     <JSONPath>$.result</JSONPath> 
    </Variable>  
    <Variable name="npi"> 
     <JSONPath>$.result[0].npi</JSONPath> 
    </Variable> 
    <Variable name="last_name"> 
     <JSONPath>$.result[0].last_name</JSONPath> 
    </Variable> 
    <Variable name="first_name"> 
     <JSONPath>$.result[0].first_name</JSONPath> 
    </Variable> 
    </JSONPayload> 
    <Source clearPayload="false">request</Source> 
    <VariablePrefix>json</VariablePrefix> 
</ExtractVariables> 

Et un exemple de politique de AssignMessage pour vous aider à dépanner. Si vous ajoutez à un proxy sans cible, il va renvoyer une réponse simple avec les valeurs extraites:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> 
    <DisplayName>Assign Message 1</DisplayName> 
    <FaultRules/> 
    <Properties/> 

    <Set> 
    <Payload> 
     npi={json.npi}, 
     last_name={json.last_name}, 
     first_name={json.first_name} 
    </Payload> 
    </Set> 

    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> 
    <AssignTo createNew="false" transport="http" type="response"/> 
</AssignMessage> 

Exemple de réponse de ce qui précède:

 npi=1671836487, 
     last_name=HUTTER, 
     first_name=JOHN 

Références:

http://apigee.com/docs/api-services/content/extract-message-content-using-extractvariables http://apigee.com/docs/api-services/content/generate-or-modify-messages-using-assignmessage

+0

Merci Ricardo! – user3723545

-1

Vous devrait être capable de faire ceci (I di ne pas le tester):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<ExtractVariables async="false" continueOnError="false" enabled="true" name="get-ressults"> 
    <DisplayName>Get Results</DisplayName> 
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> 
    <JSONPayload> 
     <Variable name="npi"> 
      $.result[*].npi 
     </Variable> 
     <Variable name="first_name"> 
      $.result[*].first_name 
     </Variable> 
     <!-- etc. --> 
    </JSONPayload> 
    <Source>response</Source> 
    <VariablePrefix>results</VariablePrefix> 
</ExtractVariables>