douye4254 2016-05-13 04:06
浏览 22
已采纳

使用php获取json模式的所有元素

I really need help on this one.

I have the following 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"
        }
    }
}

I would like to retrieve all elements and check if they are required or not,

On the first part (Getting all elements)

What I'm doing is:

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

But my problem is that I have no way to get the SKU, WarehouseID or Stock, because it's not a key nor anything of the kind.

For my second issue what I was thinking, was to put all required as string and do a loop through them, but if there is any alternative would be glad to know.

  • 写回答

1条回答 默认 最新

  • dpb35161 2016-05-13 04:14
    关注

    You can get the properties out with a simple loop:

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

    If you want to add the required field to the results from above, you can do it like so:

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

    Example with objects or with arrays.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂