我的问题是我正在将map的内容序列化到JSON.

在输出(JSON)中,我有遵循键/名称语法规则对象.

The key is created from map key, and the name from the value.

Model Example:

  class Storage {
       Map<String,String> values = new HashMap<>();

      {
         map.put("key1","key1");
         map.put("key2","key2");
         map.put("key3","key3");
      }

    }

JSON示例对象:

{
  key1=value1,
  key2=value2,
  key3=value3
}

JSON模式:

{
  "name": "storage",
  "description": "Store of key values",
  "properties": {
    // How can we describe the properties if we do not know the name ?
   }
}

The issue is that i do not know what the values will be but i know that they will be some.

你能帮我提供模式的完整定义吗?


Disclaimer:

I know that this can be also serialized as

 {
    values: [
       {key="key1", value="value1"},
       {key="key2", value="value2"},
       {key="key3", value="value3"}
    ]
 }

但是不希望在JSON中有array.

推荐答案

假设您的验证器支持它,您可以使用patternProperties.

对于模式...

{
  "title": "Map<String,String>",
  "type": "object",
  "patternProperties": {
    ".{1,}": { "type": "string" }
  }
}

...文件...

{
    "foo":"bar",
    "baz":1
}

.属性foo的值是有效的,因为它是一个字符串,但是baz验证失败,因为它是一个数字.

Json相关问答推荐

使用相同的密钥值来命名Json并使用Jolt重命名密钥

您可以使用Jolt对JSON执行OR条件吗

使用Jolt将字符串数组转换为JSON对象数组

SWIFT中的网络经理

使用Jolt库对多个数组进行嵌套循环

PowerShell脚本未按预期生成预期的JSON输出

如何用JQ打印JSON文件的路径和键值

如果主对象中已存在属性,则不应在Jolt中引用次对象

无法访问id的第三级json

用 Jolt 替换 JSON 中的值

jq:将一个数组与多个数组连接起来

使用 JSON 和相对日期设置日历视图中 SharePoint 列表项的背景 colored颜色 格式

如何获取 JSON 对象字段值和同一 JSON 对象的下一个数组中的字段值?

使用 jolt 变换压平具有公共列 JSON 的复杂嵌套

使用 jq 从字符串列表开始创建对象

数据清理设计不良的 JSON 数据 - 需要有关最佳策略的建议

坚持弄清楚如何使用 api 响应来调用以从不同的链接检索响应

TSQL FOR JSON 嵌套值

Golang / Go - 如果 struct 没有字段,如何将其编组为空?

如何使用 Serde 反序列化带有自定义函数的可选字段?