Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
582 views
in Technique[技术] by (71.8m points)

jsonschema - JSON Schema for tree structure

I have to build tree like structure of Json data.Each node has an id (an integer, required), a label (a string, optional), and an array of child nodes (optional). Can you help me how to write JSON schema for this Json data. I need to set Id as required in child node as well.

{
    "Id": 1,
    "Label": "A",
    "Child": [
        {
            "Id": 2,
            "Label": "B",
            "Child": [
                {
                    "Id": 5,
                    "Label": "E"
                }, {
                    "Id": 6,
                    "Label": "E"
                }, {
                    "Id": 7,
                    "Label": "E"
                }
            ]
        }, {
            "Id": 3,
            "Label": "C"
        }, {
            "Id": 4,
            "Label": "D",
            "Child": [
                {
                    "Id": 8,
                    "Label": "H"
                }, {
                    "Id": 9,
                    "Label": "I"
                }
            ]
        }
    ]
}

enter image description here

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

A schema for this structure only needs a definition of a node and a reference to that node. The property Children (renamed from Child) references the node as well.

Here's the schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "$ref": "#/definitions/node",
  "definitions": {
    "node": {
      "properties": {
        "Id": {
          "type": "integer"
        },
        "Label": {
          "type": "string"
        },
        "Children": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/node"
          }
        }
      },
      "required": [
        "Id"
      ]
    }
  }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...