在Powershell中遍历JSON模式

时间:2017-02-07 21:09:27

标签: json powershell schema

我正在尝试从JSON数据中进行一些代码生成。我将一些AWS备份数据转换为JSON文件。我抓住第一条记录并从那一行生成一个json模式。

当我在Powershell中加载模式时,我无法枚举属性,因为它们被反序列化为主要属性,而不是“属性”中的数组。这看起来像一个json架构,其中属性列表显示为对象列表而不是数组,但我不确定。

我猜测Powershell JSON解析器无法在那里看到数组,所以只需要它们就是属性。

我真的不想手动遍历架构JSON来获取属性及其类型列表。

schema.json

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "description": "",
  "type": "object",
  "properties": {
    "definition": {
      "type": "object",
      "properties": {
        "s": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "s"
      ]
    },
    "calcDefFilters": {
      "type": "object",
      "properties": {
        "l": {
          "type": "array",
          "uniqueItems": true,
          "minItems": 1,
          "items": {
            "required": [],
            "properties": {
              "m": {
                "type": "object",
                "properties": {
                  "field": {
                    "type": "object",
                    "properties": {
                      "s": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "s"
                    ]
                  },
                  "value": {
                    "type": "object",
                    "properties": {
                      "s": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "s"
                    ]
                  },
                  "operator": {
                    "type": "object",
                    "properties": {
                      "s": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "s"
                    ]
                  }
                },
                "required": [
                  "field",
                  "value",
                  "operator"
                ]
              }
            }
          }
        }
      },
      "required": [
        "l"
      ]
    },
    "calculationId": {
      "type": "object",
      "properties": {
        "s": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "s"
      ]
    },
    "calcDefParameters": {
      "type": "object",
      "properties": {
        "l": {
          "type": "array",
          "uniqueItems": true,
          "minItems": 1,
          "items": {
            "required": [],
            "properties": {
              "m": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "object",
                    "properties": {
                      "s": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "s"
                    ]
                  },
                  "value": {
                    "type": "object",
                    "properties": {
                      "n": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "n"
                    ]
                  },
                  "type": {
                    "type": "object",
                    "properties": {
                      "s": {
                        "type": "string",
                        "minLength": 1
                      }
                    },
                    "required": [
                      "s"
                    ]
                  }
                },
                "required": [
                  "name",
                  "value",
                  "type"
                ]
              }
            }
          }
        }
      },
      "required": [
        "l"
      ]
    },
    "runId": {
      "type": "object",
      "properties": {
        "s": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "s"
      ]
    },
    "type": {
      "type": "object",
      "properties": {
        "s": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "s"
      ]
    },
    "externalId": {
      "type": "object",
      "properties": {
        "s": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "s"
      ]
    },
    "dealVersionId": {
      "type": "object",
      "properties": {
        "s": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "s"
      ]
    }
  },
  "required": [
    "definition",
    "calcDefFilters",
    "calculationId",
    "calcDefParameters",
    "runId",
    "type",
    "externalId",
    "dealVersionId"
  ]
}

这是我在Powershell中得到的:

[DBG]: PS C:\Scripts>> $prop


definition        : @{type=object; properties=; required=System.Object[]}
calcDefFilters    : @{type=object; properties=; required=System.Object[]}
calculationId     : @{type=object; properties=; required=System.Object[]}
calcDefParameters : @{type=object; properties=; required=System.Object[]}
runId             : @{type=object; properties=; required=System.Object[]}
type              : @{type=object; properties=; required=System.Object[]}
externalId        : @{type=object; properties=; required=System.Object[]}
dealVersionId     : @{type=object; properties=; required=System.Object[]}

思想?

1 个答案:

答案 0 :(得分:0)

不确定答案,但你可以这样做:

state