【问题标题】:Tool for extracting the structure of a complex json object提取复杂json对象结构的工具
【发布时间】:2014-07-18 15:46:26
【问题描述】:

我有一大堆 json 对象:

[
  {'hash1': {prop1: 24, prop2: 11}},
  {'hash2': {prop1: 15, prop2: 'val'}},
  {'hash3': {prop1: 20, prop2: 2}},
  // ...1000s more like that
  {'hash4012': {prop1: 54, prop2: 2}, prop3: 'some string'},
  {'hash4013': {prop1: 98, prop2: 4}},
  //... more
  {'hash8202': {prop1: 21, prop2: 82}, prop3: {'key': 'value'}},
  {'hash8203': {prop1: 25, prop2: 'val2'}},
  //... more
]

在项目的任何地方都没有使用这个大哈希定义架构。

我想要一个工具,当给定上面的哈希值时,输出如下:(我不关心确切的输出,只是给你一个想法)

[
  {'string':                                           // 100%
     {prop1: integer, prop2: integer(67%),string(33%)} // 98%
     {string: {prop1: integer, prop2: integer}, prop3: // 2%
        'some string'                                  // 50% (1%)
        {'key': 'value'}                               // 50% (1%)
     }
  } 
]

这个想法是我看到了最常见的结构。

如果没有这样的工具,你将如何实现它?

(我的用例是我在现有项目中有mongo文档。因为任何地方都没有架构,所以我必须从生产数据中猜测结构。滚动浏览数千条记录很乏味)。

【问题讨论】:

  • 您正在寻找的是“漂亮的印刷品”,例如转储某种数据,并以格式正确打印出来。
  • @MarcB Pretty print 将打印我输入哈希的约 10k 行。我想要的只是结构(如您在我的示例中看到的那样,大约 9 行)

标签: json schema


【解决方案1】:

采用您的示例输入并使其成为有效的 JSON 会给出:

[
  {"hash1": {"prop1": 24, "prop2": 11}},
  {"hash2": {"prop1": 15, "prop2": "val"}},
  {"hash3": {"prop1": 20, "prop2": 2}},
  {"hash4012": {"prop1": 54, "prop2": 2}, "prop3": "some string"},
  {"hash4013": {"prop1": 98, "prop2": 4}},
  {"hash8202": {"prop1": 21, "prop2": 82}, "prop3": {"key": "value"}},
  {"hash8203": {"prop1": 25, "prop2": "val2"}}
]

现在,如果您对其进行美化(您可以使用:http://jsonprettyprint.com/),然后运行一些正则表达式替换以将值变成它们的类型名称(使用文本编辑器或脚本),例如:

  • 正则表达式替换字符串:':".+?"' => ':string'
  • 正则表达式替换整数:':[0-9]+?' => ':整数'

然后您可以获取输出并运行它:sort outputfile |唯一的-c |排序 -n -r。这会给你类似的东西:

  7    {
  7          "prop1":integer,
  6    },
  6       }
  5          "prop2":integer
  2       },
  2          "prop2":string
  1 ]
  1 [
  1    }
  1       "prop3":string
  1       "prop3":{
  1       "hash8203":{
  1       "hash8202":{
  1       "hash4013":{
  1       "hash4012":{
  1       "hash3":{
  1       "hash2":{
  1       "hash1":{
  1          "key":string

因此,查看最高值将为您提供最常见的属性名称和值类型对。使用缩进,您可以推测它在层次结构中的位置。

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2021-07-29
    相关资源
    最近更新 更多