digraph { compound=true fontname="Inconsolata, Consolas" fontsize=10 margin="0,0" ranksep=0.2 penwidth=0.5 node [fontname="Inconsolata, Consolas", fontsize=10, penwidth=0.5] edge [fontname="Inconsolata, Consolas", fontsize=10, arrowhead=normal] { node [shape=record, fontsize="8", margin="0.04", height=0.2, color=gray] oldjson [label="\{|\"|m|s|g|\"|:|\"|H|e|l|l|o|\\|n|W|o|r|l|d|!|\"|,|\"|\\|u|0|0|7|3|t|a|r|s|\"|:|1|0|\}", xlabel="Before Parsing"] //newjson [label="\{|\"|<a>m|s|g|\\0|:|\"|<b>H|e|l|l|o|\\n|W|o|r|l|d|!|\\0|\"|,|\"|<c>s|t|a|r|s|\\0|t|a|r|s|:|1|0|\}", xlabel="After Parsing"] newjson [shape=plaintext, label=< <table BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="2"><tr> <td>{</td> <td>"</td><td port="a">m</td><td>s</td><td>g</td><td bgcolor="yellow">\\0</td> <td>:</td> <td>"</td><td port="b">H</td><td>e</td><td>l</td><td>l</td><td>o</td><td bgcolor="yellow">\\n</td><td bgcolor="yellow">W</td><td bgcolor="yellow">o</td><td bgcolor="yellow">r</td><td bgcolor="yellow">l</td><td bgcolor="yellow">d</td><td bgcolor="yellow">!</td><td bgcolor="yellow">\\0</td><td>"</td> <td>,</td> <td>"</td><td port="c" bgcolor="yellow">s</td><td bgcolor="yellow">t</td><td bgcolor="yellow">a</td><td bgcolor="yellow">r</td><td bgcolor="yellow">s</td><td bgcolor="yellow">\\0</td><td>t</td><td>a</td><td>r</td><td>s</td> <td>:</td> <td>1</td><td>0</td> <td>}</td> </tr></table> >, xlabel="After Parsing"] } subgraph cluster1 { margin="10,10" labeljust="left" label = "Document by In situ Parsing" style=filled fillcolor=gray95 node [shape=Mrecord, style=filled, colorscheme=spectral7] root [label="{object|}", fillcolor=3] { msg [label="{string|<a>}", fillcolor=5] helloworld [label="{string|<a>}", fillcolor=5] stars [label="{string|<a>}", fillcolor=5] ten [label="{number|10}", fillcolor=6] } } oldjson -> root [label=" ParseInsitu()" lhead="cluster1"] edge [arrowhead=vee] root -> { msg; stars } edge [arrowhead="none"] msg -> helloworld stars -> ten { edge [arrowhead=vee, arrowtail=dot, arrowsize=0.5, dir=both, tailclip=false] msg:a:c -> newjson:a helloworld:a:c -> newjson:b stars:a:c -> newjson:c } //oldjson -> newjson [style=invis] }