【问题标题】:Getting all elements on a json schema using php使用 php 获取 json 架构上的所有元素
【发布时间】:2016-09-09 02:56:59
【问题描述】:

我真的需要这方面的帮助。

我有以下 Json 架构:

{
    "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"
        }
    }
}

我想检索所有元素并检查它们是否需要,

第一部分(获取所有元素)

我正在做的是:

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

但我的问题是我无法获取 SKU、WarehouseID 或 Stock,因为它既不是密钥也不是类似的东西。

对于我的第二个问题,我的想法是将所有必需的字符串作为字符串并循环遍历它们,但如果有任何替代方法,我会很高兴知道。

【问题讨论】:

标签: php json foreach schema


【解决方案1】:

你可以通过一个简单的循环来获取属性:

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

如果您想在上面的结果中添加必填字段,您可以这样做:

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

Example with objectswith arrays

【讨论】:

  • 感谢它在第一部分进行了一些小改动: foreach ($data['bodySchema']->properties as $key => $value) { 关于我想加粗的要求需要的属性
  • 在这种情况下,如果您使用我的第二个示例,您可以再次查看属性并执行if ($property->required) { // make it bold }
  • 第一个示例中的 $property 是什么?
  • 使用 foreach ($data['bodySchema']->required as $required) { 和一个 if 在里面解决,但我不喜欢为每个属性做一个循环
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
  • 2013-01-16
相关资源
最近更新 更多