以编程方式从JSON数据生成JSON模式

时间:2015-05-17 17:57:04

标签: c# json schema

我想从json数据文件生成json模式,如下所示。(这是使用在线工具http://jsonschema.net/生成的) 是否有可能使用JSON.NET或其他任何?

Json DataFile:

{
  "graph": [
    {
      "id": 453,
      "cid": 143,
      "title": "graph1",
      "description": "",
      "thumbnailPath": "art.jpg",
      "detailPath": "art.jpg",
      "link": "www.test.html",
      "author": "graph Team"
    },
    {
      "id": 12,
      "cid": 121,
      "title": "graph2",
      "description": "",
      "thumbnailPath": "art2.jpg",
      "detailPath": "art2.jpg",
      "link": "www.test2.html",
      "author": "graph Team"
    }
  ]
}

输出:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "id": "/",
  "type": "object",
  "properties": {
    "graph": {
      "id": "graph",
      "type": "array",
      "items": {
        "id": "1",
        "type": "object",
        "properties": {
          "id": {
            "id": "id",
            "type": "integer"
          },
          "cid": {
            "id": "cid",
            "type": "integer"
          },
          "title": {
            "id": "title",
            "type": "string"
          },
          "description": {
            "id": "description",
            "type": "string"
          },
          "thumbnailPath": {
            "id": "thumbnailPath",
            "type": "string"
          },
          "detailPath": {
            "id": "detailPath",
            "type": "string"
          },
          "link": {
            "id": "link",
            "type": "string"
          },
          "author": {
            "id": "author",
            "type": "string"
          }
        }
      }
    }
  }
}

我的目标是不使用工具,因为我想在程序运行时生成它。

1 个答案:

答案 0 :(得分:1)

好的,我这样做了:

  1. 下载visual studio extension https://visualstudiogallery.msdn.microsoft.com/b4515ef8-a518-41ca-b48c-bb1fd4e6faf7
  2. 将.vsix文件重命名为.zip
  3. 将zip文件解压缩到任意文件夹
  4. 引用Microsoft.Json.SchemaExtension.dll和Microsoft.Json.SchemaProducer.dll
  5. 确保您的项目是.net框架4.5项目(因为这两个程序集是使用.net 4.5构建的,我没有在网上的其他地方找到这些程序集)
  6. 使用此代码从JSON
  7. 获取JSON模式
  8. 虽然我不能向你保证这种做法是合法的
  9. -

    string json = @"{
      ""graph"": [
        {
          ""id"": 453,
          ""cid"": 143,
          ""title"": ""graph1"",
          ""description"": """",
          ""thumbnailPath"": ""art.jpg"",
          ""detailPath"": ""art.jpg"",
          ""link"": ""www.test.html"",
          ""author"": ""graph Team""
        },
        {
          ""id"": 12,
          ""cid"": 121,
          ""title"": ""graph2"",
          ""description"": """",
          ""thumbnailPath"": ""art2.jpg"",
          ""detailPath"": ""art2.jpg"",
          ""link"": ""www.test2.html"",
          ""author"": ""graph Team""
        }
      ]
    }";
    string jsonSchema = Microsoft.Json.SchemaProducer.SchemaBuilder.CreateSchema(json);