【问题标题】:how to resolve all references for a JSON schema in java如何在java中解析JSON模式的所有引用
【发布时间】:2020-09-28 01:17:16
【问题描述】:

我有一个 JSON 模式,它有类似的字段

  1. $模式
  2. $id
  3. $ref
  4. $合并

{
  **"$schema"**: "http://json-schema.org/draft-07/schema#",
  **"$id"**: "./field_name_1.json",
  "field_name_title": "some-title",
  "field_name_2": "some value",
  "field_name_3": {
    "field_name_4": {
      "field_name_5": "some value",
      "field_name_6": "some value",
      "field_name_7": {
        "field_name_8": {
          "field_name_9": "some value",
          **"$ref"**: "/json_file_1.json"
        },
        "field_name_": {
          **"$ref"**: "/json_file_2.json"
        }
      },
      "field_name_10": false
    }
  },
  "field_name_11": "some value",
  "field_name_12": "some value",
  "field_name_13": {
    "field_name_14": {
      **"$ref"**: "/json_file_3.json"
    },
    "session_data": {
      **"$ref"**: "/json_file_4.json"
    },
    "event_payload": {
      **"$ref"**: "#/field_name_3/field_name_4"
    }
  },
  "field_name_15": false
}

如何解析 schema 中的所有引用,并制作完整的 JSON。

主要目标是将解析后的模式映射到实体并为模式执行 crud 操作

【问题讨论】:

  • 是一次性任务还是需要定期执行?
  • @AlexanderMakarov 虽然我经常需要它,但是一次性任务有什么帮助?
  • 如果是一次性任务,可以使用Notepad++等工具进行替换;如果是常规要求,您可以在 java 或 python 上编写一些自动化
  • @AlexanderMakarov:哦,不,它已经在程序中完成,不是一次性任务

标签: java json serialization json-deserialization


【解决方案1】:

有多种方法可以完成此任务,即实现简单的自动化以代表您替换令牌,这将执行以下步骤:

  1. 创建一个包含令牌-值对的映射(Map、HashMap)
  2. 通过json库读取json;这是一个如何做的例子 - https://www.baeldung.com/java-org-json
  3. 遍历json并通过java字符串的replace方法替换一个token。

另一种方法是通过具有专用插件的外部工具(例如 gradle)进行替换。在 gradle 存储库中有一堆插件可以做到这一点 - https://plugins.gradle.org/search?term=token+replacement,例如这个 https://github.com/HexoMod-tools/gradle.replace.token.preprocessor.plugin

【讨论】:

    【解决方案2】:

    参考:java-json-tools,项目。

    com.github.fge.jsonschema.core.load.RefResolver 类似乎具有该功能。 参考:javadoc

    我还没有尝试过,所以无法添加更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-03
      • 2017-04-14
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多