使用
$ dot -Tjson input.dot
$ dot -Tjson0 input.dot
$ dot -Tdot_json input.dot
$ dot -Txdot_json input.dot

JSON

JavaScript 对象表示法

这些格式会生成一个 JSON 输出,其中包含 DOT 语言的编码。

  • json0 会生成 JSON 格式的输出,其中包含与 -Tdot 生成的输出相同的信息。
  • json 会生成 JSON 格式的输出,其中包含与 -Txdot 生成的输出相同的信息。

这两种格式都假设图已经由其中一个布局算法处理过。

dot_jsonxdot_json 也会生成与 json0json 相似的 JSON 输出,分别对应,只是它们只使用图的输入内容。具体来说,它们不假设图已经由任何布局算法处理过,并且输出中出现的唯一 xdot 信息都来自原始输入文件。

这些生成的输出遵循下面所示的 json 模式。请注意,objects 数组首先包含所有子图,然后包含所有节点。_gvid 值是 objects 数组中子图或节点的索引。这也适用于 objects 数组中的边。请注意,此格式允许集群图,其中边可以连接集群和节点。

示例:使用 -Tdot_json 渲染的简单图

$ echo 'digraph { a->b }' | dot -Tdot_json
{
  "name": "%3",
  "directed": true,
  "strict": false,
  "_subgraph_cnt": 0,
  "objects": [
    {
      "_gvid": 0,
      "name": "a",
      "label": "\\N"
    },
    {
      "_gvid": 1,
      "name": "b",
      "label": "\\N"
    }
  ],
  "edges": [
    {
      "_gvid": 0,
      "tail": 0,
      "head": 1
    }
  ]
}
示例:使用 -Txdot_json 渲染的简单图

$ echo 'digraph { a->b }' | dot -Txdot_json
{
  "name": "%3",
  "directed": true,
  "strict": false,
  "_subgraph_cnt": 0,
  "objects": [
    {
      "_gvid": 0,
      "name": "a",
      "label": "\\N"
    },
    {
      "_gvid": 1,
      "name": "b",
      "label": "\\N"
    }
  ],
  "edges": [
    {
      "_gvid": 0,
      "tail": 0,
      "head": 1
    }
  ]
}
示例:使用 -Tjson0 渲染的简单图

$ echo 'digraph { a->b }' | dot -Tjson0
{
  "name": "%3",
  "directed": true,
  "strict": false,
  "bb": "0,0,54,108",
  "_subgraph_cnt": 0,
  "objects": [
    {
      "_gvid": 0,
      "name": "a",
      "height": "0.5",
      "label": "\\N",
      "pos": "27,90",
      "width": "0.75"
    },
    {
      "_gvid": 1,
      "name": "b",
      "height": "0.5",
      "label": "\\N",
      "pos": "27,18",
      "width": "0.75"
    }
  ],
  "edges": [
    {
      "_gvid": 0,
      "tail": 0,
      "head": 1,
      "pos": "e,27,36.104 27,71.697 27,63.983 27,54.712 27,46.112"
    }
  ]
}
示例:使用 -Tjson 渲染的简单图

echo 'digraph { a->b }' | dot -Tjson
{
  "name": "%3",
  "directed": true,
  "strict": false,
  "_draw_": 
  [
    {
      "op": "c",
      "grad": "none",
      "color": "#fffffe00"
    },
    {
      "op": "C",
      "grad": "none",
      "color": "#ffffff"
    },
    {
      "op": "P",
      "points": [[0.000,0.000],[0.000,108.000],[54.000,108.000],[54.000,0.000]]
    }
  ],
  "bb": "0,0,54,108",
  "xdotversion": "1.7",
  "_subgraph_cnt": 0,
  "objects": [
    {
      "_gvid": 0,
      "name": "a",
      "_draw_": 
      [
        {
          "op": "c",
          "grad": "none",
          "color": "#000000"
        },
        {
          "op": "e",
          "rect": [27.000,90.000,27.000,18.000]
        }
      ],
      "_ldraw_": 
      [
        {
          "op": "F",
          "size": 14.000,
          "face": "Times-Roman"
        },
        {
          "op": "c",
          "grad": "none",
          "color": "#000000"
        },
        {
          "op": "T",
          "pt": [27.000,86.300],
          "align": "c",
          "width": 7.000,
          "text": "a"
        }
      ],
      "height": "0.5",
      "label": "\\N",
      "pos": "27,90",
      "width": "0.75"
    },
    {
      "_gvid": 1,
      "name": "b",
      "_draw_": 
      [
        {
          "op": "c",
          "grad": "none",
          "color": "#000000"
        },
        {
          "op": "e",
          "rect": [27.000,18.000,27.000,18.000]
        }
      ],
      "_ldraw_": 
      [
        {
          "op": "F",
          "size": 14.000,
          "face": "Times-Roman"
        },
        {
          "op": "c",
          "grad": "none",
          "color": "#000000"
        },
        {
          "op": "T",
          "pt": [27.000,14.300],
          "align": "c",
          "width": 7.000,
          "text": "b"
        }
      ],
      "height": "0.5",
      "label": "\\N",
      "pos": "27,18",
      "width": "0.75"
    }
  ],
  "edges": [
    {
      "_gvid": 0,
      "tail": 0,
      "head": 1,
      "_draw_": 
      [
        {
          "op": "c",
          "grad": "none",
          "color": "#000000"
        },
        {
          "op": "b",
          "points": [[27.000,71.700],[27.000,63.980],[27.000,54.710],[27.000,46.110]]
        }
      ],
      "_hdraw_": 
      [
        {
          "op": "S",
          "style": "solid"
        },
        {
          "op": "c",
          "grad": "none",
          "color": "#000000"
        },
        {
          "op": "C",
          "grad": "none",
          "color": "#000000"
        },
        {
          "op": "P",
          "points": [[30.500,46.100],[27.000,36.100],[23.500,46.100]]
        }
      ],
      "pos": "e,27,36.104 27,71.697 27,63.983 27,54.712 27,46.112"
    }
  ]
}
描述图的 JSON 表示,编码了 xdot 属性
标题Graphviz JSON
必填
  • 名称
  • 有向
  • 严格
  • _subgraph_cnt
定义
drawops
项目
oneOf
$ref
#/definitions/ellipse
#/definitions/polygon
#/definitions/polyline
#/definitions/bspline
#/definitions/text
#/definitions/font_style
#/definitions/drawcolor
#/definitions/font
#/definitions/style
类型数组
style
必填
  • 操作
  • style
类型对象
属性
style
类型string
操作
模式S
类型string
font_style
必填
  • 操作
  • fontchar
类型对象
属性
操作
模式t
类型string
fontchar
最小值0
类型整数
最大值127
多边形
必填
  • 操作
类型对象
属性
$ref#/definitions/pointlist
操作
模式[pP]
类型string
元节点
必填
  • _gvid
  • 名称
类型对象
属性
_draw_
$ref#/definitions/drawops
名称
类型string
描述节点或子图名称
_ldraw_
$ref#/definitions/drawops
_gvid
类型整数
子图
项目
类型整数
类型数组
描述子图的索引
项目
类型整数
类型数组
描述此子图中边的索引
additionalProperties
类型string
节点
项目
类型整数
类型数组
描述此子图中节点的索引
标题节点或子图
color
模式(#[0-9a-f]*)|(#[0-9a-f]{8})
类型string
文本
必填
  • 操作
  • pt
  • 对齐
  • 文本
  • width
类型对象
属性
文本
类型string
对齐
模式[lcr]
类型string
操作
模式T
类型string
pt
$ref#/definitions/point
width
类型数字
point
minItems2
项目
类型数字
类型数组
maxItems2
停止
必填
  • frac
  • color
类型对象
属性
color
$ref#/definitions/color
frac
类型数字
drawcolor
必填
  • 操作
  • grad
类型对象
属性
p0
oneOf
$ref
#/definitions/point
#/definitions/point3
p1
oneOf
$ref
#/definitions/point
#/definitions/point3
color
$ref#/definitions/color
停止
项目
$ref#/definitions/stop
类型数组
grad
枚举
  • 线性
  • 径向
类型string
操作
模式[cC]
类型string
椭圆
必填
  • 操作
  • rect
类型对象
属性
rect
$ref#/definitions/rectangle
操作
模式[eE]
类型string
B样条曲线
必填
  • 操作
类型对象
属性
$ref#/definitions/pointlist
操作
模式[bB]
类型string
必填
  • _gvid
  • 尾部
  • 头部
类型对象
属性
_hldraw_
$ref#/definitions/drawops
_tdraw_
$ref#/definitions/drawops
_draw_
$ref#/definitions/drawops
_ldraw_
$ref#/definitions/drawops
_gvid
类型整数
尾部
类型整数
描述尾节点的 _gvid
_tldraw_
$ref#/definitions/drawops
_hdraw_
$ref#/definitions/drawops
additionalProperties
类型string
头部
类型整数
描述尾部的 _gvid
标题
折线
必填
  • 操作
类型对象
属性
$ref#/definitions/pointlist
操作
模式L
类型string
字体
必填
  • 操作
  • size
类型对象
属性
size
最小值0
类型数字
操作
模式F
类型string
类型string
point3
minItems3
项目
类型数字
类型数组
maxItems3
矩形
minItems4
项目
类型数字
类型数组
maxItems4
pointlist
项目
$ref#/definitions/point
类型数组
类型对象
属性
有向
类型布尔值
描述如果图是有向的,则为 True
_draw_
$ref#/definitions/drawops
名称
类型string
描述图的名称
对象
项目
$ref#/definitions/metanode
类型数组
描述图的子图,后面跟着图的节点
_ldraw_
$ref#/definitions/drawops
严格
类型布尔值
描述如果图是严格的,则为 True
项目
$ref#/definitions/edge
类型数组
additionalProperties
类型string
_subgraph_cnt
类型整数
描述图中子图的数量
最后修改时间:2024 年 7 月 28 日:将所有 Hugo 'ref' 替换为 'relref' (bbef86a)