json — улучшение цикла броска схемы по переполнению стека

Это работает, но чувствует себя действительно «грязным»

У меня есть схема JSON, как:

[
{
"url": "http://www.google.com/api/updateVariable",
"verb": "POST",
"bodySchema": {
"type": "object",
"properties": {
"StoreId": {
"sync": "True",
"type": "integer"},
"SKU": {
"sync": "True",
"type": "string"},
"WareHouseId": {
"sync": "False",
"type": "integer"},
"Stock": {
"sync": "True",
"type": "integer"}
},
"required": [
"StoreId",
"SKU",
"Stock"]
}
},

{
"url": "http://www.google.com/api/insertVariable",
"verb": "POST",
"bodySchema": {
"type": "object",
"properties": {
"StoreId": {
"sync": "True",
"type": "integer"},
"SKU": {
"sync": "True",
"type": "string"},
"WareHouseId": {
"sync": "False",
"type": "integer"},
"Description": {
"sync": "True",
"type": "integer"}
},
"required": [
"StoreId",
"SKU",
"Description"]
}
}
]

И я хочу, чтобы цикл бросить все свойства (еще раз, это работает)

    $result=json_decode($result, true);
while($item = array_shift($result)){
foreach ($item as $key => $value){
if($key=="bodySchema"){
foreach ($value as $key2 => $value3){
if($key2==properties)
var_dump($value3);
}
}
}
}

То, что я хотел бы иметь что-то вроде:

$result=json_decode($result, true);
foreach($result as $mydata){
foreach($mydata->bodySchema->properties as $values){
var_dump($values->value);
}
}

это возможно ?, я хочу сохранить этот код как можно более чистым и аккуратным

-1

Решение

Да, вы можете сделать это так, как вы хотите. У вас просто есть синтаксис для очистки.

В этом примере $result является ассоциативным массивом, так что вы можете индексировать в него, как и любой другой массив.

$result = json_decode($result, true);
foreach ($result as $mydata) {
foreach ($mydata["bodySchema"]["properties"] as $propertyName => $schema){
var_dump([$propertyName, $schema]);
}
}

Если вы предпочитаете синтаксис объекта, отбросьте true от json_decode,

$result = json_decode($result);
foreach ($result as $mydata) {
foreach ($mydata->bodySchema->properties as $propertyName => $schema){
var_dump([$propertyName, $schema]);
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]