填充Json模式的动态值

时间:2014-09-16 02:14:57

标签: json jsonschema

我是json架构的新手,我很难找到解决问题的方法。 我需要使用下面显示的模式将服务器发送的数据填充到json编辑器中。

注意:这只是架构的一小部分。 我有一个json模式,如下所示:

 


    {
      "id": "#ProcessApplicationList",
      "type": "array",
      "title":"ProcessApplicationList",
      "description":"List of process application.",
      "items": {
        "id": "#ProcessApplication",
        "type": "object",
        "required":[
        "ProcessId",
        "InputParameter"
        ],
        "title":"ProcessApplication",
        "description":"Process application.",
        "properties": {
          "ProcessId":{
            "id":"#ProcessId",
            "type":"string",
            "title":"Identification code of process",
            "description":"e.g. 'process#01'"
          },
          "InputParameter": {
            "id": "#InputParameter",
            "type": "object",
            "additionalProperties": {
              "anyOf": [
                { "type": "string" },
                { "type": "number" },
                { "type": "boolean"}
              ]
            }
          }
        }
      }
    }


 

这是来自服务器的示例响应。

 

    {
      "Acceptability" : {
        "ProcessList" : [
          {
            "ProcessId" : "process#01",
            "ProcessName" : "sign",
            "ProcessDescription":"sign your plug-in by using signature",
            "ProcessAvailability" : true,
            "ProcessParameterSchema" : {
              "\"$schema\":\"http://json-schema.org/draft-04/schema#\",
              \"sign_type\":{
                \"id\":\"#sign_type\",
                \"type\":\"string\",
                \"title\":\"sign_type\"}
            },
            {
              "ProcessId" : "process#02",
              "ProcessName" : "encryption",
              "ProcessDescription":"encrypt your plug-in by using key",
              "ProcessAvailability" : true,
              "ProcessParameterSchema" : {
                "\"$schema\":\"http://json-schema.org/draft-04/schema#\",
                \"enc_type\": {
                  \"id\":\"#enc_type\",
                  \"type\":\"string\",
                  \"title\":\"enc_type\"
              }
            }
          }
        ]
      }
    }

 

JSON编辑器的输出应该是这样的: ![IMG] http://i61.tinypic.com/2r61r0k.png

我需要将“ProcessParameterSchema”的值设置为“InputParameter”。 我需要为“ProcessApplicationList”中的每个元素更新“InputParameter”。 由于“ProcessApplicationList”是一个数组,我不知道如何进行更新。 谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定这是否适用于您的具体情况,但一般的解决方案是使用json hyper-schema

使用json超模式,您可以使用" schema"定义API可用操作。用于定义可接受的请求格式的属性。答案的模式可以通过" href"链接,因此客户端可以处理每个可能的架构。

第二个选项,如果你在客户端拥有所有可能的嵌套模式,那就是通过" oneOf"包含" href" s的集合的属性。在这种情况下,您可以使用这些href来进行适当的决定来验证和绘制UI。一个有趣的变化是将href解析为后端有效的URI(这是一种破解首先描述的HAL方法的方法)。