2016-05-13 4 views
0

bekommen Ich brauche wirklich Hilfe zu diesem Thema.Alle Elemente auf einem JSON-Schema mit PHP

Ich habe folgendes Json Schema:

{ 
    "url": "http://www.google.com", 
    "bodySchema": { 
     "type": "object", 
     "properties": { 
      "SKU": { 
       "sync": "True", 
       "mapTo": "SKU", 
       "type": "string" 
      }, 
      "WareHouseId": { 
       "sync": "False", 
       "mapTo": "", 
       "type": "integer" 
      }, 
      "Stock": { 
       "sync": "True", 
       "mapTo": "Stock", 
       "type": "integer" 
      } 
     }, 
     "required": { 
      "0": "SKU", 
      "1": "Stock" 
     } 
    } 
} 

Ich möchte alle Elemente abrufen und überprüfen, ob sie oder nicht,

Im ersten Teil erforderlich sind (immer alle Elemente)

Was ich tue, ist:

foreach ($this->methods as $data) { 
    if(!empty($data['bodySchema']->properties)){ 
    } 
} 

Aber mein Problem ist, dass ich keine wa haben y, um die SKU, WarehouseID oder Stock zu erhalten, weil es kein Schlüssel oder ähnliches ist.

Für meine zweite Frage, was ich dachte, war, alle benötigten als String und machen Sie eine Schleife durch sie, aber wenn es irgendeine Alternative wäre, wäre froh zu wissen.

+0

Siehe hierzu: http://stackoverflow.com/questions/36759525/parsing-a-complex-json-data-returned-by-api-in-javascript-edited-it-worked-wit/36765367?noredirect = 1 # comment61190261_36765367 – GBnewbie

+0

Danke @GBnewbie, aber ich hatte diesen Teil bereits gelöst und funktioniert, hatte ich Probleme bekommen die Schlüssel – Saikios

Antwort

1

Sie können die Eigenschaften aus mit einer einfachen Schleife erhalten:

foreach ($data->bodySchema->properties as $key => $value) { 
    // .. 
} 

Wenn Sie das gewünschte Feld auf die Ergebnisse von oben hinzufügen möchten, können Sie es wie so tun können:

foreach ($data->bodySchema->required as $required) { 
    $data->bodySchema->properties->$required->required = true; 
} 

Example with objects oder with arrays.

+0

Dank es arbeitete der erste Teil mit einer kleinen Änderung: foreach ($ data ['bodySchema'] -> Eigenschaften als $ key => $ value) { über die erforderlichen Ich möchte fett die Eigenschaften, die erforderlich sind, – Saikios

+0

setzen in diesem Fall, wenn Sie mein zweites Beispiel verwendet, könnten Sie dann die Eigenschaften erneut und tun 'if ($ Eigenschaft-> erforderlich) {// Fett formatieren} ' –

+0

Was ist $ property in Ihrem ersten Beispiel? – Saikios