如何在Java中解析JSON模式的所有引用

问题描述

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

  1. $ schema
  2. $ id
  3. $ ref
  4. $ merge

ex

{
  **"$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
}

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

主要目标是将解析的架构映射到一个实体,并对架构执行Crud操作

解决方法

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

  1. 创建将具有令牌-值对的地图(地图,HashMap)
  2. 通过json库读取json;那是一个如何做的例子-https://www.baeldung.com/java-org-json
  3. 遍历json并通过java字符串的replace方法替换令牌。

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