json.html 173 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <!-- This file is generated by Nim. -->
  4. <html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8. <title>std/json</title>
  9. <!-- Google fonts -->
  10. <link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
  11. <link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
  12. <!-- Favicon -->
  13. <link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
  14. <link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
  15. <!-- CSS -->
  16. <link rel="stylesheet" type="text/css" href="nimdoc.out.css?v=2.3.1">
  17. <!-- JS -->
  18. <script type="text/javascript" src="dochack.js?v=2.3.1"></script>
  19. </head>
  20. <body>
  21. <div class="document" id="documentId">
  22. <div class="container">
  23. <h1 class="title">std/json</h1>
  24. <div class="row">
  25. <div class="three columns">
  26. <div class="theme-select-wrapper">
  27. <label for="theme-select">Theme:&nbsp;</label>
  28. <select id="theme-select" onchange="setTheme(this.value)">
  29. <option value="auto">🌗 Match OS</option>
  30. <option value="dark">🌑 Dark</option>
  31. <option value="light">🌕 Light</option>
  32. </select>
  33. </div>
  34. <div id="global-links">
  35. <ul class="simple-boot">
  36. <li><a href="manual.html">Manual</a></li>
  37. <li><a href="lib.html">Standard library</a></li>
  38. <li> <a id="indexLink" href="theindex.html">Index</a></li>
  39. <li><a href="compiler/theindex.html">Compiler docs</a></li>
  40. <li><a href="https://nim-lang.github.io/fusion/theindex.html">Fusion docs</a></li>
  41. <li><a href="https://nim-lang.github.io/Nim/">devel</a>, <a href="https://nim-lang.org/documentation.html">stable</a></li>
  42. </ul>
  43. </div>
  44. <div id="searchInputDiv">
  45. Search: <input type="search" id="searchInput"
  46. oninput="search()" />
  47. </div>
  48. <ul class="simple simple-toc" id="toc-list">
  49. <li><a class="reference" id="see-also_toc" href="#see-also">See also</a></li>
  50. <li><a class="reference" id="overview_toc" href="#overview">Overview</a></li>
  51. <ul class="simple"><li><a class="reference" id="overview-parsing-json_toc" href="#overview-parsing-json">Parsing JSON</a></li>
  52. <li><a class="reference" id="overview-reading-values_toc" href="#overview-reading-values">Reading values</a></li>
  53. <li><a class="reference" id="overview-handling-optional-keys_toc" href="#overview-handling-optional-keys">Handling optional keys</a></li>
  54. <li><a class="reference" id="overview-using-default-values_toc" href="#overview-using-default-values">Using default values</a></li>
  55. <li><a class="reference" id="overview-unmarshalling_toc" href="#overview-unmarshalling">Unmarshalling</a></li>
  56. </ul><li><a class="reference" id="creating-json_toc" href="#creating-json">Creating JSON</a></li>
  57. <li>
  58. <a class="reference reference-toplevel" href="#6" id="56">Imports</a>
  59. </li>
  60. <li>
  61. <details open>
  62. <summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
  63. <ul class="simple simple-toc-section">
  64. <li><a class="reference" href="#JsonNode" title="JsonNode = ref JsonNodeObj">JsonNode</a></li>
  65. <li><a class="reference" href="#JsonNodeKind" title="JsonNodeKind = enum
  66. JNull, JBool, JInt, JFloat, JString, JObject, JArray">JsonNodeKind</a></li>
  67. <li><a class="reference" href="#JsonNodeObj" title="JsonNodeObj {.acyclic.} = object
  68. case kind*: JsonNodeKind
  69. of JString:
  70. str*: string
  71. of JInt:
  72. num*: BiggestInt
  73. of JFloat:
  74. fnum*: float
  75. of JBool:
  76. bval*: bool
  77. of JNull:
  78. nil
  79. of JObject:
  80. fields*: OrderedTable[string, JsonNode]
  81. of JArray:
  82. elems*: seq[JsonNode]">JsonNodeObj</a></li>
  83. </ul>
  84. </details>
  85. </li>
  86. <li>
  87. <details open>
  88. <summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
  89. <ul class="simple simple-toc-section">
  90. <ul class="simple nested-toc-section">$
  91. <li><a class="reference" href="#%24%2CJsonNode" title="`$`(node: JsonNode): string">`$`(node: JsonNode): string</a></li>
  92. </ul>
  93. <ul class="simple nested-toc-section">%
  94. <li><a class="reference" href="#%25%2Cbool" title="`%`(b: bool): JsonNode">`%`(b: bool): JsonNode</a></li>
  95. <li><a class="reference" href="#%25%2CopenArray%5Btuple%5Bstring%2CJsonNode%5D%5D" title="`%`(keyVals: openArray[tuple[key: string, val: JsonNode]]): JsonNode">`%`(keyVals: openArray[tuple[key: string, val: JsonNode]]): JsonNode</a></li>
  96. <li><a class="reference" href="#%25%2CBiggestInt" title="`%`(n: BiggestInt): JsonNode">`%`(n: BiggestInt): JsonNode</a></li>
  97. <li><a class="reference" href="#%25%2CBiggestUInt" title="`%`(n: BiggestUInt): JsonNode">`%`(n: BiggestUInt): JsonNode</a></li>
  98. <li><a class="reference" href="#%25%2Cfloat" title="`%`(n: float): JsonNode">`%`(n: float): JsonNode</a></li>
  99. <li><a class="reference" href="#%25%2Cint" title="`%`(n: int): JsonNode">`%`(n: int): JsonNode</a></li>
  100. <li><a class="reference" href="#%25%2Cuint" title="`%`(n: uint): JsonNode">`%`(n: uint): JsonNode</a></li>
  101. <li><a class="reference" href="#%25_2" title="`%`(o: enum): JsonNode">`%`(o: enum): JsonNode</a></li>
  102. <li><a class="reference" href="#%25%2Cref." title="`%`(o: ref object): JsonNode">`%`(o: ref object): JsonNode</a></li>
  103. <li><a class="reference" href="#%25%2Cstring" title="`%`(s: string): JsonNode">`%`(s: string): JsonNode</a></li>
  104. <li><a class="reference" href="#%25%2CT" title="`%`[T: object](o: T): JsonNode">`%`[T: object](o: T): JsonNode</a></li>
  105. <li><a class="reference" href="#%25%2CopenArray%5BT%5D" title="`%`[T](elements: openArray[T]): JsonNode">`%`[T](elements: openArray[T]): JsonNode</a></li>
  106. <li><a class="reference" href="#%25%2COption%5BT%5D" title="`%`[T](opt: Option[T]): JsonNode">`%`[T](opt: Option[T]): JsonNode</a></li>
  107. <li><a class="reference" href="#%25" title="`%`[T](table: Table[string, T] | OrderedTable[string, T]): JsonNode">`%`[T](table: Table[string, T] | OrderedTable[string, T]): JsonNode</a></li>
  108. </ul>
  109. <ul class="simple nested-toc-section">==
  110. <li><a class="reference" href="#%3D%3D%2CJsonNode%2CJsonNode" title="`==`(a, b: JsonNode): bool">`==`(a, b: JsonNode): bool</a></li>
  111. </ul>
  112. <ul class="simple nested-toc-section">[]
  113. <li><a class="reference" href="#%5B%5D%2CJsonNode%2CBackwardsIndex" title="`[]`(node: JsonNode; index: BackwardsIndex): JsonNode">`[]`(node: JsonNode; index: BackwardsIndex): JsonNode</a></li>
  114. <li><a class="reference" href="#%5B%5D%2CJsonNode%2Cint" title="`[]`(node: JsonNode; index: int): JsonNode">`[]`(node: JsonNode; index: int): JsonNode</a></li>
  115. <li><a class="reference" href="#%5B%5D%2CJsonNode%2Cstring" title="`[]`(node: JsonNode; name: string): JsonNode">`[]`(node: JsonNode; name: string): JsonNode</a></li>
  116. <li><a class="reference" href="#%5B%5D%2CJsonNode%2CHSlice%5BU%2CV%5D" title="`[]`[U, V](a: JsonNode; x: HSlice[U, V]): JsonNode">`[]`[U, V](a: JsonNode; x: HSlice[U, V]): JsonNode</a></li>
  117. </ul>
  118. <ul class="simple nested-toc-section">[]=
  119. <li><a class="reference" href="#%5B%5D%3D%2CJsonNode%2Cstring%2CJsonNode" title="`[]=`(obj: JsonNode; key: string; val: JsonNode)">`[]=`(obj: JsonNode; key: string; val: JsonNode)</a></li>
  120. </ul>
  121. <ul class="simple nested-toc-section">add
  122. <li><a class="reference" href="#add%2CJsonNode%2CJsonNode" title="add(father, child: JsonNode)">add(father, child: JsonNode)</a></li>
  123. <li><a class="reference" href="#add%2CJsonNode%2Cstring%2CJsonNode" title="add(obj: JsonNode; key: string; val: JsonNode)">add(obj: JsonNode; key: string; val: JsonNode)</a></li>
  124. </ul>
  125. <ul class="simple nested-toc-section">contains
  126. <li><a class="reference" href="#contains%2CJsonNode%2Cstring" title="contains(node: JsonNode; key: string): bool">contains(node: JsonNode; key: string): bool</a></li>
  127. <li><a class="reference" href="#contains%2CJsonNode%2CJsonNode" title="contains(node: JsonNode; val: JsonNode): bool">contains(node: JsonNode; val: JsonNode): bool</a></li>
  128. </ul>
  129. <ul class="simple nested-toc-section">copy
  130. <li><a class="reference" href="#copy%2CJsonNode" title="copy(p: JsonNode): JsonNode">copy(p: JsonNode): JsonNode</a></li>
  131. </ul>
  132. <ul class="simple nested-toc-section">delete
  133. <li><a class="reference" href="#delete%2CJsonNode%2Cstring" title="delete(obj: JsonNode; key: string)">delete(obj: JsonNode; key: string)</a></li>
  134. </ul>
  135. <ul class="simple nested-toc-section">escapeJson
  136. <li><a class="reference" href="#escapeJson%2Cstring" title="escapeJson(s: string): string">escapeJson(s: string): string</a></li>
  137. <li><a class="reference" href="#escapeJson%2Cstring%2Cstring" title="escapeJson(s: string; result: var string)">escapeJson(s: string; result: var string)</a></li>
  138. </ul>
  139. <ul class="simple nested-toc-section">escapeJsonUnquoted
  140. <li><a class="reference" href="#escapeJsonUnquoted%2Cstring" title="escapeJsonUnquoted(s: string): string">escapeJsonUnquoted(s: string): string</a></li>
  141. <li><a class="reference" href="#escapeJsonUnquoted%2Cstring%2Cstring" title="escapeJsonUnquoted(s: string; result: var string)">escapeJsonUnquoted(s: string; result: var string)</a></li>
  142. </ul>
  143. <ul class="simple nested-toc-section">getBiggestInt
  144. <li><a class="reference" href="#getBiggestInt%2CJsonNode%2CBiggestInt" title="getBiggestInt(n: JsonNode; default: BiggestInt = 0): BiggestInt">getBiggestInt(n: JsonNode; default: BiggestInt = 0): BiggestInt</a></li>
  145. </ul>
  146. <ul class="simple nested-toc-section">getBool
  147. <li><a class="reference" href="#getBool%2CJsonNode%2Cbool" title="getBool(n: JsonNode; default: bool = false): bool">getBool(n: JsonNode; default: bool = false): bool</a></li>
  148. </ul>
  149. <ul class="simple nested-toc-section">getElems
  150. <li><a class="reference" href="#getElems%2CJsonNode%2Cseq%5BJsonNode%5D" title="getElems(n: JsonNode; default: seq[JsonNode] = @[]): seq[JsonNode]">getElems(n: JsonNode; default: seq[JsonNode] = @[]): seq[JsonNode]</a></li>
  151. </ul>
  152. <ul class="simple nested-toc-section">getFields
  153. <li><a class="reference" href="#getFields%2CJsonNode" title="getFields(n: JsonNode; default = initOrderedTable[string, JsonNode](2)): OrderedTable[
  154. string, JsonNode]">getFields(n: JsonNode; default = initOrderedTable[string, JsonNode](2)): OrderedTable[
  155. string, JsonNode]</a></li>
  156. </ul>
  157. <ul class="simple nested-toc-section">getFloat
  158. <li><a class="reference" href="#getFloat%2CJsonNode%2Cfloat" title="getFloat(n: JsonNode; default: float = 0.0): float">getFloat(n: JsonNode; default: float = 0.0): float</a></li>
  159. </ul>
  160. <ul class="simple nested-toc-section">getInt
  161. <li><a class="reference" href="#getInt%2CJsonNode%2Cint" title="getInt(n: JsonNode; default: int = 0): int">getInt(n: JsonNode; default: int = 0): int</a></li>
  162. </ul>
  163. <ul class="simple nested-toc-section">getOrDefault
  164. <li><a class="reference" href="#getOrDefault%2CJsonNode%2Cstring" title="getOrDefault(node: JsonNode; key: string): JsonNode">getOrDefault(node: JsonNode; key: string): JsonNode</a></li>
  165. </ul>
  166. <ul class="simple nested-toc-section">getStr
  167. <li><a class="reference" href="#getStr%2CJsonNode%2Cstring" title="getStr(n: JsonNode; default: string = &quot;&quot;): string">getStr(n: JsonNode; default: string = &quot;&quot;): string</a></li>
  168. </ul>
  169. <ul class="simple nested-toc-section">hash
  170. <li><a class="reference" href="#hash%2CJsonNode" title="hash(n: JsonNode): Hash">hash(n: JsonNode): Hash</a></li>
  171. <li><a class="reference" href="#hash%2COrderedTable%5Bstring%2CJsonNode%5D" title="hash(n: OrderedTable[string, JsonNode]): Hash">hash(n: OrderedTable[string, JsonNode]): Hash</a></li>
  172. </ul>
  173. <ul class="simple nested-toc-section">hasKey
  174. <li><a class="reference" href="#hasKey%2CJsonNode%2Cstring" title="hasKey(node: JsonNode; key: string): bool">hasKey(node: JsonNode; key: string): bool</a></li>
  175. </ul>
  176. <ul class="simple nested-toc-section">len
  177. <li><a class="reference" href="#len%2CJsonNode" title="len(n: JsonNode): int">len(n: JsonNode): int</a></li>
  178. </ul>
  179. <ul class="simple nested-toc-section">newJArray
  180. <li><a class="reference" href="#newJArray" title="newJArray(): JsonNode">newJArray(): JsonNode</a></li>
  181. </ul>
  182. <ul class="simple nested-toc-section">newJBool
  183. <li><a class="reference" href="#newJBool%2Cbool" title="newJBool(b: bool): JsonNode">newJBool(b: bool): JsonNode</a></li>
  184. </ul>
  185. <ul class="simple nested-toc-section">newJFloat
  186. <li><a class="reference" href="#newJFloat%2Cfloat" title="newJFloat(n: float): JsonNode">newJFloat(n: float): JsonNode</a></li>
  187. </ul>
  188. <ul class="simple nested-toc-section">newJInt
  189. <li><a class="reference" href="#newJInt%2CBiggestInt" title="newJInt(n: BiggestInt): JsonNode">newJInt(n: BiggestInt): JsonNode</a></li>
  190. </ul>
  191. <ul class="simple nested-toc-section">newJNull
  192. <li><a class="reference" href="#newJNull" title="newJNull(): JsonNode">newJNull(): JsonNode</a></li>
  193. </ul>
  194. <ul class="simple nested-toc-section">newJObject
  195. <li><a class="reference" href="#newJObject" title="newJObject(): JsonNode">newJObject(): JsonNode</a></li>
  196. </ul>
  197. <ul class="simple nested-toc-section">newJString
  198. <li><a class="reference" href="#newJString%2Cstring" title="newJString(s: string): JsonNode">newJString(s: string): JsonNode</a></li>
  199. </ul>
  200. <ul class="simple nested-toc-section">parseFile
  201. <li><a class="reference" href="#parseFile%2Cstring" title="parseFile(filename: string): JsonNode">parseFile(filename: string): JsonNode</a></li>
  202. </ul>
  203. <ul class="simple nested-toc-section">parseJson
  204. <li><a class="reference" href="#parseJson%2Cstring" title="parseJson(buffer: string; rawIntegers = false; rawFloats = false): JsonNode">parseJson(buffer: string; rawIntegers = false; rawFloats = false): JsonNode</a></li>
  205. <li><a class="reference" href="#parseJson%2CStream%2Cstring" title="parseJson(s: Stream; filename: string = &quot;&quot;; rawIntegers = false;
  206. rawFloats = false): JsonNode">parseJson(s: Stream; filename: string = &quot;&quot;; rawIntegers = false;
  207. rawFloats = false): JsonNode</a></li>
  208. </ul>
  209. <ul class="simple nested-toc-section">pretty
  210. <li><a class="reference" href="#pretty%2CJsonNode%2Cint" title="pretty(node: JsonNode; indent = 2): string">pretty(node: JsonNode; indent = 2): string</a></li>
  211. </ul>
  212. <ul class="simple nested-toc-section">to
  213. <li><a class="reference" href="#to%2CJsonNode%2Ctypedesc%5BT%5D" title="to[T](node: JsonNode; t: typedesc[T]): T">to[T](node: JsonNode; t: typedesc[T]): T</a></li>
  214. </ul>
  215. <ul class="simple nested-toc-section">toUgly
  216. <li><a class="reference" href="#toUgly%2Cstring%2CJsonNode" title="toUgly(result: var string; node: JsonNode)">toUgly(result: var string; node: JsonNode)</a></li>
  217. </ul>
  218. <ul class="simple nested-toc-section">{}
  219. <li><a class="reference" href="#%7B%7D%2CJsonNode%2Cvarargs%5Bint%5D" title="`{}`(node: JsonNode; index: varargs[int]): JsonNode">`{}`(node: JsonNode; index: varargs[int]): JsonNode</a></li>
  220. <li><a class="reference" href="#%7B%7D%2CJsonNode%2Cstring" title="`{}`(node: JsonNode; key: string): JsonNode">`{}`(node: JsonNode; key: string): JsonNode</a></li>
  221. <li><a class="reference" href="#%7B%7D%2CJsonNode%2Cvarargs%5Bstring%5D" title="`{}`(node: JsonNode; keys: varargs[string]): JsonNode">`{}`(node: JsonNode; keys: varargs[string]): JsonNode</a></li>
  222. </ul>
  223. <ul class="simple nested-toc-section">{}=
  224. <li><a class="reference" href="#%7B%7D%3D%2CJsonNode%2Cvarargs%5Bstring%5D%2CJsonNode" title="`{}=`(node: JsonNode; keys: varargs[string]; value: JsonNode)">`{}=`(node: JsonNode; keys: varargs[string]; value: JsonNode)</a></li>
  225. </ul>
  226. </ul>
  227. </details>
  228. </li>
  229. <li>
  230. <details open>
  231. <summary><a class="reference reference-toplevel" href="#15" id="65">Iterators</a></summary>
  232. <ul class="simple simple-toc-section">
  233. <ul class="simple nested-toc-section">items
  234. <li><a class="reference" href="#items.i%2CJsonNode" title="items(node: JsonNode): JsonNode">items(node: JsonNode): JsonNode</a></li>
  235. </ul>
  236. <ul class="simple nested-toc-section">keys
  237. <li><a class="reference" href="#keys.i%2CJsonNode" title="keys(node: JsonNode): string">keys(node: JsonNode): string</a></li>
  238. </ul>
  239. <ul class="simple nested-toc-section">mitems
  240. <li><a class="reference" href="#mitems.i%2CJsonNode" title="mitems(node: var JsonNode): var JsonNode">mitems(node: var JsonNode): var JsonNode</a></li>
  241. </ul>
  242. <ul class="simple nested-toc-section">mpairs
  243. <li><a class="reference" href="#mpairs.i%2CJsonNode" title="mpairs(node: var JsonNode): tuple[key: string, val: var JsonNode]">mpairs(node: var JsonNode): tuple[key: string, val: var JsonNode]</a></li>
  244. </ul>
  245. <ul class="simple nested-toc-section">pairs
  246. <li><a class="reference" href="#pairs.i%2CJsonNode" title="pairs(node: JsonNode): tuple[key: string, val: JsonNode]">pairs(node: JsonNode): tuple[key: string, val: JsonNode]</a></li>
  247. </ul>
  248. <ul class="simple nested-toc-section">parseJsonFragments
  249. <li><a class="reference" href="#parseJsonFragments.i%2CStream%2Cstring" title="parseJsonFragments(s: Stream; filename: string = &quot;&quot;; rawIntegers = false;
  250. rawFloats = false): JsonNode">parseJsonFragments(s: Stream; filename: string = &quot;&quot;; rawIntegers = false;
  251. rawFloats = false): JsonNode</a></li>
  252. </ul>
  253. </ul>
  254. </details>
  255. </li>
  256. <li>
  257. <details open>
  258. <summary><a class="reference reference-toplevel" href="#17" id="67">Macros</a></summary>
  259. <ul class="simple simple-toc-section">
  260. <ul class="simple nested-toc-section">%*
  261. <li><a class="reference" href="#%25%2A.m%2Cuntyped" title="`%*`(x: untyped): untyped">`%*`(x: untyped): untyped</a></li>
  262. </ul>
  263. <ul class="simple nested-toc-section">isRefSkipDistinct
  264. <li><a class="reference" href="#isRefSkipDistinct.m%2Ctyped" title="isRefSkipDistinct(arg: typed): untyped">isRefSkipDistinct(arg: typed): untyped</a></li>
  265. </ul>
  266. </ul>
  267. </details>
  268. </li>
  269. <li>
  270. <details open>
  271. <summary><a class="reference reference-toplevel" href="#18" id="68">Templates</a></summary>
  272. <ul class="simple simple-toc-section">
  273. <ul class="simple nested-toc-section">%
  274. <li><a class="reference" href="#%25.t%2CJsonNode" title="`%`(j: JsonNode): JsonNode">`%`(j: JsonNode): JsonNode</a></li>
  275. </ul>
  276. </ul>
  277. </details>
  278. </li>
  279. </ul>
  280. </div>
  281. <div class="nine columns" id="content">
  282. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  283. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  284. <div id="tocRoot"></div>
  285. <p class="module-desc">This module implements a simple high performance <span id="json_1">JSON</span> parser. JSON (JavaScript Object Notation) is a lightweight data-interchange format that is easy for humans to read and write (unlike XML). It is easy for machines to parse and generate. JSON is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999.
  286. <h1><a class="toc-backref" id="see-also" href="#see-also">See also</a></h1><ul class="simple"><li><a class="reference external" href="parsejson.html">std/parsejson</a></li>
  287. <li><a class="reference external" href="jsonutils.html">std/jsonutils</a></li>
  288. <li><a class="reference external" href="marshal.html">std/marshal</a></li>
  289. <li><a class="reference external" href="jscore.html">std/jscore</a></li>
  290. </ul>
  291. <h1><a class="toc-backref" id="overview" href="#overview">Overview</a></h1>
  292. <h2><a class="toc-backref" id="overview-parsing-json" href="#overview-parsing-json">Parsing JSON</a></h2><p>JSON often arrives into your program (via an API or a file) as a <tt class="docutils literal"><span class="pre"><span class="Identifier">string</span></span></tt>. The first step is to change it from its serialized form into a nested object structure called a <tt class="docutils literal"><span class="pre"><span class="Identifier">JsonNode</span></span></tt>.</p>
  293. <p>The <tt class="docutils literal"><span class="pre"><span class="Identifier">parseJson</span></span></tt> procedure takes a string containing JSON and returns a <tt class="docutils literal"><span class="pre"><span class="Identifier">JsonNode</span></span></tt> object. This is an object variant and it is either a <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Identifier">JArray</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Identifier">JFloat</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Identifier">JBool</span></span></tt> or <tt class="docutils literal"><span class="pre"><span class="Identifier">JNull</span></span></tt>. You check the kind of this object variant by using the <tt class="docutils literal"><span class="pre"><span class="Identifier">kind</span></span></tt> accessor.</p>
  294. <p>For a <tt class="docutils literal"><span class="pre"><span class="Identifier">JsonNode</span></span></tt> who's kind is <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span></span></tt>, you can access its fields using the <tt class="docutils literal"><span class="pre"><span class="Punctuation">[</span><span class="Punctuation">]</span></span></tt> operator. The following example shows how to do this:</p>
  295. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  296. <span class="Keyword">let</span> <span class="Identifier">jsonNode</span> <span class="Operator">=</span> <span class="Identifier">parseJson</span><span class="Punctuation">(</span><span class="LongStringLit">&quot;&quot;&quot;{&quot;key&quot;: 3.14}&quot;&quot;&quot;</span><span class="Punctuation">)</span>
  297. <span class="Identifier">doAssert</span> <span class="Identifier">jsonNode</span><span class="Operator">.</span><span class="Identifier">kind</span> <span class="Operator">==</span> <span class="Identifier">JObject</span>
  298. <span class="Identifier">doAssert</span> <span class="Identifier">jsonNode</span><span class="Punctuation">[</span><span class="StringLit">&quot;key&quot;</span><span class="Punctuation">]</span><span class="Operator">.</span><span class="Identifier">kind</span> <span class="Operator">==</span> <span class="Identifier">JFloat</span></pre></p>
  299. <h2><a class="toc-backref" id="overview-reading-values" href="#overview-reading-values">Reading values</a></h2><p>Once you have a <tt class="docutils literal"><span class="pre"><span class="Identifier">JsonNode</span></span></tt>, retrieving the values can then be achieved by using one of the helper procedures, which include:</p>
  300. <ul class="simple"><li><tt class="docutils literal"><span class="pre"><span class="Identifier">getInt</span></span></tt></li>
  301. <li><tt class="docutils literal"><span class="pre"><span class="Identifier">getFloat</span></span></tt></li>
  302. <li><tt class="docutils literal"><span class="pre"><span class="Identifier">getStr</span></span></tt></li>
  303. <li><tt class="docutils literal"><span class="pre"><span class="Identifier">getBool</span></span></tt></li>
  304. </ul>
  305. <p>To retrieve the value of <tt class="docutils literal"><span class="pre"><span class="StringLit">&quot;key&quot;</span></span></tt> you can do the following:</p>
  306. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  307. <span class="Keyword">let</span> <span class="Identifier">jsonNode</span> <span class="Operator">=</span> <span class="Identifier">parseJson</span><span class="Punctuation">(</span><span class="LongStringLit">&quot;&quot;&quot;{&quot;key&quot;: 3.14}&quot;&quot;&quot;</span><span class="Punctuation">)</span>
  308. <span class="Identifier">doAssert</span> <span class="Identifier">jsonNode</span><span class="Punctuation">[</span><span class="StringLit">&quot;key&quot;</span><span class="Punctuation">]</span><span class="Operator">.</span><span class="Identifier">getFloat</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">3.14</span></pre></p>
  309. <p><strong>Important:</strong> The <tt class="docutils literal"><span class="pre"><span class="Punctuation">[</span><span class="Punctuation">]</span></span></tt> operator will raise an exception when the specified field does not exist.</p>
  310. <h2><a class="toc-backref" id="overview-handling-optional-keys" href="#overview-handling-optional-keys">Handling optional keys</a></h2><p>By using the <tt class="docutils literal"><span class="pre"><span class="Punctuation">{</span><span class="Punctuation">}</span></span></tt> operator instead of <tt class="docutils literal"><span class="pre"><span class="Punctuation">[</span><span class="Punctuation">]</span></span></tt>, it will return <tt class="docutils literal"><span class="pre"><span class="Keyword">nil</span></span></tt> when the field is not found. The <tt class="docutils literal"><span class="pre"><span class="Identifier">get</span></span></tt>-family of procedures will return a type's default value when called on <tt class="docutils literal"><span class="pre"><span class="Keyword">nil</span></span></tt>.</p>
  311. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  312. <span class="Keyword">let</span> <span class="Identifier">jsonNode</span> <span class="Operator">=</span> <span class="Identifier">parseJson</span><span class="Punctuation">(</span><span class="StringLit">&quot;{}&quot;</span><span class="Punctuation">)</span>
  313. <span class="Identifier">doAssert</span> <span class="Identifier">jsonNode</span><span class="Punctuation">{</span><span class="StringLit">&quot;nope&quot;</span><span class="Punctuation">}</span><span class="Operator">.</span><span class="Identifier">getInt</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">0</span>
  314. <span class="Identifier">doAssert</span> <span class="Identifier">jsonNode</span><span class="Punctuation">{</span><span class="StringLit">&quot;nope&quot;</span><span class="Punctuation">}</span><span class="Operator">.</span><span class="Identifier">getFloat</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">0</span>
  315. <span class="Identifier">doAssert</span> <span class="Identifier">jsonNode</span><span class="Punctuation">{</span><span class="StringLit">&quot;nope&quot;</span><span class="Punctuation">}</span><span class="Operator">.</span><span class="Identifier">getStr</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;&quot;</span>
  316. <span class="Identifier">doAssert</span> <span class="Identifier">jsonNode</span><span class="Punctuation">{</span><span class="StringLit">&quot;nope&quot;</span><span class="Punctuation">}</span><span class="Operator">.</span><span class="Identifier">getBool</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Identifier">false</span></pre></p>
  317. <h2><a class="toc-backref" id="overview-using-default-values" href="#overview-using-default-values">Using default values</a></h2><p>The <tt class="docutils literal"><span class="pre"><span class="Identifier">get</span></span></tt>-family helpers also accept an additional parameter which allow you to fallback to a default value should the key's values be <tt class="docutils literal"><span class="pre"><span class="Identifier">null</span></span></tt>:</p>
  318. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  319. <span class="Keyword">let</span> <span class="Identifier">jsonNode</span> <span class="Operator">=</span> <span class="Identifier">parseJson</span><span class="Punctuation">(</span><span class="LongStringLit">&quot;&quot;&quot;{&quot;key&quot;: 3.14, &quot;key2&quot;: null}&quot;&quot;&quot;</span><span class="Punctuation">)</span>
  320. <span class="Identifier">doAssert</span> <span class="Identifier">jsonNode</span><span class="Punctuation">[</span><span class="StringLit">&quot;key&quot;</span><span class="Punctuation">]</span><span class="Operator">.</span><span class="Identifier">getFloat</span><span class="Punctuation">(</span><span class="FloatNumber">6.28</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">3.14</span>
  321. <span class="Identifier">doAssert</span> <span class="Identifier">jsonNode</span><span class="Punctuation">[</span><span class="StringLit">&quot;key2&quot;</span><span class="Punctuation">]</span><span class="Operator">.</span><span class="Identifier">getFloat</span><span class="Punctuation">(</span><span class="FloatNumber">3.14</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">3.14</span>
  322. <span class="Identifier">doAssert</span> <span class="Identifier">jsonNode</span><span class="Punctuation">{</span><span class="StringLit">&quot;nope&quot;</span><span class="Punctuation">}</span><span class="Operator">.</span><span class="Identifier">getFloat</span><span class="Punctuation">(</span><span class="FloatNumber">3.14</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">3.14</span> <span class="Comment"># note the {}</span></pre></p>
  323. <h2><a class="toc-backref" id="overview-unmarshalling" href="#overview-unmarshalling">Unmarshalling</a></h2><p>In addition to reading dynamic data, Nim can also unmarshal JSON directly into a type with the <tt class="docutils literal"><span class="pre"><span class="Identifier">to</span></span></tt> macro.</p>
  324. <p>Note: Use <a class="reference external" href="options.html#Option">Option</a> for keys sometimes missing in json responses, and backticks around keys with a reserved keyword as name.</p>
  325. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  326. <span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">options</span>
  327. <span class="Keyword">type</span>
  328. <span class="Identifier">User</span> <span class="Operator">=</span> <span class="Keyword">object</span>
  329. <span class="Identifier">name</span><span class="Punctuation">:</span> <span class="Identifier">string</span>
  330. <span class="Identifier">age</span><span class="Punctuation">:</span> <span class="Identifier">int</span>
  331. <span class="Punctuation">`</span><span class="Keyword">type</span><span class="Punctuation">`</span><span class="Punctuation">:</span> <span class="Identifier">Option</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span>
  332. <span class="Keyword">let</span> <span class="Identifier">userJson</span> <span class="Operator">=</span> <span class="Identifier">parseJson</span><span class="Punctuation">(</span><span class="LongStringLit">&quot;&quot;&quot;{ &quot;name&quot;: &quot;Nim&quot;, &quot;age&quot;: 12 }&quot;&quot;&quot;</span><span class="Punctuation">)</span>
  333. <span class="Keyword">let</span> <span class="Identifier">user</span> <span class="Operator">=</span> <span class="Identifier">to</span><span class="Punctuation">(</span><span class="Identifier">userJson</span><span class="Punctuation">,</span> <span class="Identifier">User</span><span class="Punctuation">)</span>
  334. <span class="Keyword">if</span> <span class="Identifier">user</span><span class="Operator">.</span><span class="Punctuation">`</span><span class="Keyword">type</span><span class="Punctuation">`</span><span class="Operator">.</span><span class="Identifier">isSome</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
  335. <span class="Identifier">assert</span> <span class="Identifier">user</span><span class="Operator">.</span><span class="Punctuation">`</span><span class="Keyword">type</span><span class="Punctuation">`</span><span class="Operator">.</span><span class="Identifier">get</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Operator">!=</span> <span class="StringLit">&quot;robot&quot;</span></pre></p>
  336. <h1><a class="toc-backref" id="creating-json" href="#creating-json">Creating JSON</a></h1><p>This module can also be used to comfortably create JSON using the <tt class="docutils literal"><span class="pre"><span class="Operator">%*</span></span></tt> operator:</p>
  337. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  338. <span class="Keyword">var</span> <span class="Identifier">hisName</span> <span class="Operator">=</span> <span class="StringLit">&quot;John&quot;</span>
  339. <span class="Keyword">let</span> <span class="Identifier">herAge</span> <span class="Operator">=</span> <span class="DecNumber">31</span>
  340. <span class="Keyword">var</span> <span class="Identifier">j</span> <span class="Operator">=</span> <span class="Operator">%*</span>
  341. <span class="Punctuation">[</span>
  342. <span class="Punctuation">{</span> <span class="StringLit">&quot;name&quot;</span><span class="Punctuation">:</span> <span class="Identifier">hisName</span><span class="Punctuation">,</span> <span class="StringLit">&quot;age&quot;</span><span class="Punctuation">:</span> <span class="DecNumber">30</span> <span class="Punctuation">}</span><span class="Punctuation">,</span>
  343. <span class="Punctuation">{</span> <span class="StringLit">&quot;name&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;Susan&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;age&quot;</span><span class="Punctuation">:</span> <span class="Identifier">herAge</span> <span class="Punctuation">}</span>
  344. <span class="Punctuation">]</span>
  345. <span class="Keyword">var</span> <span class="Identifier">j2</span> <span class="Operator">=</span> <span class="Operator">%*</span> <span class="Punctuation">{</span><span class="StringLit">&quot;name&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;Isaac&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;books&quot;</span><span class="Punctuation">:</span> <span class="Punctuation">[</span><span class="StringLit">&quot;Robot Dreams&quot;</span><span class="Punctuation">]</span><span class="Punctuation">}</span>
  346. <span class="Identifier">j2</span><span class="Punctuation">[</span><span class="StringLit">&quot;details&quot;</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="Operator">%*</span> <span class="Punctuation">{</span><span class="StringLit">&quot;age&quot;</span><span class="Punctuation">:</span><span class="DecNumber">35</span><span class="Punctuation">,</span> <span class="StringLit">&quot;pi&quot;</span><span class="Punctuation">:</span><span class="FloatNumber">3.1415</span><span class="Punctuation">}</span>
  347. <span class="Identifier">echo</span> <span class="Identifier">j2</span></pre></p>
  348. <p>See also: std/jsonutils for hookable json serialization/deserialization of arbitrary types.</p>
  349. <p><strong class="examples_text">Example:</strong></p>
  350. <pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  351. <span class="Comment">## Note: for JObject, key ordering is preserved, unlike in some languages,</span>
  352. <span class="Comment">## this is convenient for some use cases. Example:</span>
  353. <span class="Keyword">type</span> <span class="Identifier">Foo</span> <span class="Operator">=</span> <span class="Keyword">object</span>
  354. <span class="Identifier">a1</span><span class="Punctuation">,</span> <span class="Identifier">a2</span><span class="Punctuation">,</span> <span class="Identifier">a0</span><span class="Punctuation">,</span> <span class="Identifier">a3</span><span class="Punctuation">,</span> <span class="Identifier">a4</span><span class="Punctuation">:</span> <span class="Identifier">int</span>
  355. <span class="Identifier">doAssert</span> <span class="Operator">$</span><span class="Punctuation">(</span><span class="Operator">%*</span> <span class="Identifier">Foo</span><span class="Punctuation">(</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="LongStringLit">&quot;&quot;&quot;{&quot;a1&quot;:0,&quot;a2&quot;:0,&quot;a0&quot;:0,&quot;a3&quot;:0,&quot;a4&quot;:0}&quot;&quot;&quot;</span></pre></p>
  356. <div class="section" id="6">
  357. <h1><a class="toc-backref" href="#6">Imports</a></h1>
  358. <dl class="item">
  359. <a class="reference external" href="hashes.html">hashes</a>, <a class="reference external" href="tables.html">tables</a>, <a class="reference external" href="strutils.html">strutils</a>, <a class="reference external" href="lexbase.html">lexbase</a>, <a class="reference external" href="streams.html">streams</a>, <a class="reference external" href="macros.html">macros</a>, <a class="reference external" href="parsejson.html">parsejson</a>, <a class="reference external" href="options.html">options</a>, <a class="reference external" href="since.html">since</a>, <a class="reference external" href="syncio.html">syncio</a>, <a class="reference external" href="assertions.html">assertions</a>, <a class="reference external" href="formatfloat.html">formatfloat</a>
  360. </dl>
  361. </div>
  362. <div class="section" id="7">
  363. <h1><a class="toc-backref" href="#7">Types</a></h1>
  364. <dl class="item">
  365. <div id="JsonNode">
  366. <dt><pre><a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <a href="json.html#JsonNodeObj"><span class="Identifier">JsonNodeObj</span></a></pre></dt>
  367. <dd>
  368. JSON node
  369. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L194" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  370. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L194" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  371. </dd>
  372. </div>
  373. <div id="JsonNodeKind">
  374. <dt><pre><a href="json.html#JsonNodeKind"><span class="Identifier">JsonNodeKind</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
  375. <span class="Identifier">JNull</span><span class="Other">,</span> <span class="Identifier">JBool</span><span class="Other">,</span> <span class="Identifier">JInt</span><span class="Other">,</span> <span class="Identifier">JFloat</span><span class="Other">,</span> <span class="Identifier">JString</span><span class="Other">,</span> <span class="Identifier">JObject</span><span class="Other">,</span> <span class="Identifier">JArray</span></pre></dt>
  376. <dd>
  377. possible JSON node types
  378. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L185" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  379. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L185" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  380. </dd>
  381. </div>
  382. <div id="JsonNodeObj">
  383. <dt><pre><a href="json.html#JsonNodeObj"><span class="Identifier">JsonNodeObj</span></a> {.<span class="Identifier">acyclic</span>.} <span class="Other">=</span> <span class="Keyword">object</span>
  384. <span class="Keyword">case</span> <span class="Identifier">kind</span><span class="Operator">*</span><span class="Other">:</span> <a href="json.html#JsonNodeKind"><span class="Identifier">JsonNodeKind</span></a>
  385. <span class="Keyword">of</span> <span class="Identifier">JString</span><span class="Other">:</span>
  386. <span class="Identifier">str</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a>
  387. <span class="Keyword">of</span> <span class="Identifier">JInt</span><span class="Other">:</span>
  388. <span class="Identifier">num</span><span class="Operator">*</span><span class="Other">:</span> <a href="ctypes.html#BiggestInt"><span class="Identifier">BiggestInt</span></a>
  389. <span class="Keyword">of</span> <span class="Identifier">JFloat</span><span class="Other">:</span>
  390. <span class="Identifier">fnum</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a>
  391. <span class="Keyword">of</span> <span class="Identifier">JBool</span><span class="Other">:</span>
  392. <span class="Identifier">bval</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a>
  393. <span class="Keyword">of</span> <span class="Identifier">JNull</span><span class="Other">:</span>
  394. <span class="Keyword">nil</span>
  395. <span class="Keyword">of</span> <span class="Identifier">JObject</span><span class="Other">:</span>
  396. <span class="Identifier">fields</span><span class="Operator">*</span><span class="Other">:</span> <a href="tables.html#OrderedTable"><span class="Identifier">OrderedTable</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">,</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">]</span>
  397. <span class="Keyword">of</span> <span class="Identifier">JArray</span><span class="Other">:</span>
  398. <span class="Identifier">elems</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">]</span></pre></dt>
  399. <dd>
  400. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L195" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  401. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L195" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  402. </dd>
  403. </div>
  404. </dl>
  405. </div>
  406. <div class="section" id="12">
  407. <h1><a class="toc-backref" href="#12">Procs</a></h1>
  408. <dl class="item">
  409. <div id="$-procs-all">
  410. <div id="$,JsonNode">
  411. <dt><pre><span class="Keyword">proc</span> <a href="#%24%2CJsonNode"><span class="Identifier">`$`</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  412. <dd>
  413. Converts <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt> to its JSON Representation on one line.
  414. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L827" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  415. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L827" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  416. </dd>
  417. </div>
  418. </div>
  419. <div id="%-procs-all">
  420. <div id="%,bool">
  421. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2Cbool"><span class="Identifier">`%`</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  422. <dd>
  423. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JBool</span> <span class="Identifier">JsonNode</span></span></tt>.
  424. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L354" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  425. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L354" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  426. </dd>
  427. </div>
  428. <div id="%,openArray[tuple[string,JsonNode]]">
  429. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2CopenArray%5Btuple%5Bstring%2CJsonNode%5D%5D"><span class="Identifier">`%`</span></a><span class="Other">(</span><span class="Identifier">keyVals</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">,</span> <span class="Identifier">val</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">]</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.
  430. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  431. <dd>
  432. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span> <span class="Identifier">JsonNode</span></span></tt>
  433. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L358" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  434. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L358" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  435. </dd>
  436. </div>
  437. <div id="%,BiggestInt">
  438. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2CBiggestInt"><span class="Identifier">`%`</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="ctypes.html#BiggestInt"><span class="Identifier">BiggestInt</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  439. <dd>
  440. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span> <span class="Identifier">JsonNode</span></span></tt>.
  441. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L337" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  442. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L337" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  443. </dd>
  444. </div>
  445. <div id="%,BiggestUInt">
  446. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2CBiggestUInt"><span class="Identifier">`%`</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="ctypes.html#BiggestUInt"><span class="Identifier">BiggestUInt</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  447. <dd>
  448. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span> <span class="Identifier">JsonNode</span></span></tt>.
  449. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L330" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  450. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L330" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  451. </dd>
  452. </div>
  453. <div id="%,float">
  454. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2Cfloat"><span class="Identifier">`%`</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  455. <dd>
  456. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JFloat</span> <span class="Identifier">JsonNode</span></span></tt>.
  457. <p><strong class="examples_text">Example:</strong></p>
  458. <pre class="listing"><span class="Identifier">assert</span> <span class="Operator">$</span><span class="Punctuation">(</span><span class="Operator">%</span><span class="Punctuation">[</span><span class="Identifier">NaN</span><span class="Punctuation">,</span> <span class="Identifier">Inf</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="Identifier">Inf</span><span class="Punctuation">,</span> <span class="FloatNumber">0.0</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="FloatNumber">0.0</span><span class="Punctuation">,</span> <span class="FloatNumber">1.0</span><span class="Punctuation">,</span> <span class="FloatNumber">1e-2</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="LongStringLit">&quot;&quot;&quot;[&quot;nan&quot;,&quot;inf&quot;,&quot;-inf&quot;,0.0,-0.0,1.0,0.01]&quot;&quot;&quot;</span>
  459. <span class="Identifier">assert</span> <span class="Punctuation">(</span><span class="Operator">%</span><span class="Identifier">NaN</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">kind</span> <span class="Operator">==</span> <span class="Identifier">JString</span>
  460. <span class="Identifier">assert</span> <span class="Punctuation">(</span><span class="Operator">%</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">kind</span> <span class="Operator">==</span> <span class="Identifier">JFloat</span></pre>
  461. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L341" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  462. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L341" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  463. </dd>
  464. </div>
  465. <div id="%,int">
  466. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2Cint"><span class="Identifier">`%`</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  467. <dd>
  468. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span> <span class="Identifier">JsonNode</span></span></tt>.
  469. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L326" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  470. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L326" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  471. </dd>
  472. </div>
  473. <div id="%,uint">
  474. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2Cuint"><span class="Identifier">`%`</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  475. <dd>
  476. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span> <span class="Identifier">JsonNode</span></span></tt>.
  477. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L319" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  478. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L319" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  479. </dd>
  480. </div>
  481. <div id="%_2">
  482. <dt><pre><span class="Keyword">proc</span> <a href="#%25_2"><span class="Identifier">`%`</span></a><span class="Other">(</span><span class="Identifier">o</span><span class="Other">:</span> <span class="Keyword">enum</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a></pre></dt>
  483. <dd>
  484. Construct a JsonNode that represents the specified enum value as a string. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span> <span class="Identifier">JsonNode</span></span></tt>.
  485. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L411" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  486. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L411" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  487. </dd>
  488. </div>
  489. <div id="%,ref.">
  490. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2Cref."><span class="Identifier">`%`</span></a><span class="Other">(</span><span class="Identifier">o</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Keyword">object</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a></pre></dt>
  491. <dd>
  492. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span> <span class="Identifier">JsonNode</span></span></tt>
  493. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L404" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  494. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L404" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  495. </dd>
  496. </div>
  497. <div id="%,string">
  498. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2Cstring"><span class="Identifier">`%`</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  499. <dd>
  500. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span> <span class="Identifier">JsonNode</span></span></tt>.
  501. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L315" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  502. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L315" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  503. </dd>
  504. </div>
  505. <div id="%,T">
  506. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2CT"><span class="Identifier">`%`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <span class="Keyword">object</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">o</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a></pre></dt>
  507. <dd>
  508. Construct JsonNode from tuples and objects.
  509. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L399" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  510. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L399" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  511. </dd>
  512. </div>
  513. <div id="%,openArray[T]">
  514. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2CopenArray%5BT%5D"><span class="Identifier">`%`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">elements</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a></pre></dt>
  515. <dd>
  516. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JArray</span> <span class="Identifier">JsonNode</span></span></tt>
  517. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L366" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  518. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L366" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  519. </dd>
  520. </div>
  521. <div id="%,Option[T]">
  522. <dt><pre><span class="Keyword">proc</span> <a href="#%25%2COption%5BT%5D"><span class="Identifier">`%`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">opt</span><span class="Other">:</span> <a href="options.html#Option"><span class="Identifier">Option</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a></pre></dt>
  523. <dd>
  524. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JNull</span> <span class="Identifier">JsonNode</span></span></tt> if <tt class="docutils literal"><span class="pre"><span class="Identifier">opt</span></span></tt> is empty, otherwise it delegates to the underlying value.
  525. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L376" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  526. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L376" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  527. </dd>
  528. </div>
  529. <div id="%">
  530. <dt><pre><span class="Keyword">proc</span> <a href="#%25"><span class="Identifier">`%`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">table</span><span class="Other">:</span> <a href="tables.html#Table"><span class="Identifier">Table</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span> <span class="Operator">|</span> <a href="tables.html#OrderedTable"><span class="Identifier">OrderedTable</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a></pre></dt>
  531. <dd>
  532. Generic constructor for JSON data. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span> <span class="Identifier">JsonNode</span></span></tt>.
  533. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L371" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  534. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L371" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  535. </dd>
  536. </div>
  537. </div>
  538. <div id="==-procs-all">
  539. <div id="==,JsonNode,JsonNode">
  540. <dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2CJsonNode%2CJsonNode"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span>
  541. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  542. <dd>
  543. Check two nodes for equality
  544. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L447" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  545. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L447" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  546. </dd>
  547. </div>
  548. </div>
  549. <div id="[]-procs-all">
  550. <div id="[],JsonNode,BackwardsIndex">
  551. <dt><pre><span class="Keyword">proc</span> <a href="#%5B%5D%2CJsonNode%2CBackwardsIndex"><span class="Identifier">`[]`</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">index</span><span class="Other">:</span> <a href="system.html#BackwardsIndex"><span class="Identifier">BackwardsIndex</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  552. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  553. <dd>
  554. <p>Gets the node at <tt class="docutils literal"><span class="pre"><span class="Identifier">array</span><span class="Operator">.</span><span class="Identifier">len</span><span class="Operator">-</span><span class="Identifier">i</span></span></tt> in an array through the <tt class="docutils literal"><span class="pre"><span class="Operator">^</span></span></tt> operator.</p>
  555. <p>i.e. <tt class="docutils literal"><span class="pre"><span class="Identifier">j</span><span class="Punctuation">[</span><span class="Operator">^</span><span class="Identifier">i</span><span class="Punctuation">]</span></span></tt> is a shortcut for <tt class="docutils literal"><span class="pre"><span class="Identifier">j</span><span class="Punctuation">[</span><span class="Identifier">j</span><span class="Operator">.</span><span class="Identifier">len</span><span class="Operator">-</span><span class="Identifier">i</span><span class="Punctuation">]</span></span></tt>.</p>
  556. <p><strong class="examples_text">Example:</strong></p>
  557. <pre class="listing"><span class="Keyword">let</span>
  558. <span class="Identifier">j</span> <span class="Operator">=</span> <span class="Identifier">parseJson</span><span class="Punctuation">(</span><span class="StringLit">&quot;[1,2,3,4,5]&quot;</span><span class="Punctuation">)</span>
  559. <span class="Identifier">doAssert</span> <span class="Identifier">j</span><span class="Punctuation">[</span><span class="Operator">^</span><span class="DecNumber">1</span><span class="Punctuation">]</span><span class="Operator">.</span><span class="Identifier">getInt</span> <span class="Operator">==</span> <span class="DecNumber">5</span>
  560. <span class="Identifier">doAssert</span> <span class="Identifier">j</span><span class="Punctuation">[</span><span class="Operator">^</span><span class="DecNumber">2</span><span class="Punctuation">]</span><span class="Operator">.</span><span class="Identifier">getInt</span> <span class="Operator">==</span> <span class="DecNumber">4</span></pre>
  561. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L535" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  562. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L535" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  563. </dd>
  564. </div>
  565. <div id="[],JsonNode,int">
  566. <dt><pre><span class="Keyword">proc</span> <a href="#%5B%5D%2CJsonNode%2Cint"><span class="Identifier">`[]`</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">index</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  567. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  568. <dd>
  569. Gets the node at <tt class="docutils literal"><span class="pre"><span class="Identifier">index</span></span></tt> in an Array. Result is undefined if <tt class="docutils literal"><span class="pre"><span class="Identifier">index</span></span></tt> is out of bounds, but as long as array bound checks are enabled it will result in an exception.
  570. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L527" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  571. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L527" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  572. </dd>
  573. </div>
  574. <div id="[],JsonNode,string">
  575. <dt><pre><span class="Keyword">proc</span> <a href="#%5B%5D%2CJsonNode%2Cstring"><span class="Identifier">`[]`</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">name</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span>
  576. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  577. <dd>
  578. Gets a field from a <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span></span></tt>, which must not be nil. If the value at <tt class="docutils literal"><span class="pre"><span class="Identifier">name</span></span></tt> does not exist, raises KeyError.
  579. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L518" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  580. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L518" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  581. </dd>
  582. </div>
  583. <div id="[],JsonNode,HSlice[U,V]">
  584. <dt><pre><span class="Keyword">proc</span> <a href="#%5B%5D%2CJsonNode%2CHSlice%5BU%2CV%5D"><span class="Identifier">`[]`</span></a><span class="Other">[</span><span class="Identifier">U</span><span class="Other">,</span> <span class="Identifier">V</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#HSlice"><span class="Identifier">HSlice</span></a><span class="Other">[</span><span class="Identifier">U</span><span class="Other">,</span> <span class="Identifier">V</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a></pre></dt>
  585. <dd>
  586. <p>Slice operation for JArray.</p>
  587. <p>Returns the inclusive range <tt class="docutils literal"><span class="pre"><span class="Punctuation">[</span><span class="Identifier">a</span><span class="Punctuation">[</span><span class="Identifier">x</span><span class="Operator">.</span><span class="Identifier">a</span><span class="Punctuation">]</span><span class="Punctuation">,</span> <span class="Identifier">a</span><span class="Punctuation">[</span><span class="Identifier">x</span><span class="Operator">.</span><span class="Identifier">b</span><span class="Punctuation">]</span><span class="Punctuation">]</span></span></tt>:</p>
  588. <p><strong class="examples_text">Example:</strong></p>
  589. <pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  590. <span class="Keyword">let</span> <span class="Identifier">arr</span> <span class="Operator">=</span> <span class="Operator">%</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Punctuation">,</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="DecNumber">4</span><span class="Punctuation">,</span><span class="DecNumber">5</span><span class="Punctuation">]</span>
  591. <span class="Identifier">doAssert</span> <span class="Identifier">arr</span><span class="Punctuation">[</span><span class="FloatNumber">2.</span><span class="Operator">.</span><span class="DecNumber">4</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="Operator">%</span><span class="Punctuation">[</span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="DecNumber">4</span><span class="Punctuation">]</span>
  592. <span class="Identifier">doAssert</span> <span class="Identifier">arr</span><span class="Punctuation">[</span><span class="FloatNumber">2.</span><span class="Operator">.^</span><span class="DecNumber">2</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="Operator">%</span><span class="Punctuation">[</span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="DecNumber">4</span><span class="Punctuation">]</span>
  593. <span class="Identifier">doAssert</span> <span class="Identifier">arr</span><span class="Punctuation">[</span><span class="Operator">^</span><span class="FloatNumber">4.</span><span class="Operator">.^</span><span class="DecNumber">2</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="Operator">%</span><span class="Punctuation">[</span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="DecNumber">4</span><span class="Punctuation">]</span></pre>
  594. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L548" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  595. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L548" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  596. </dd>
  597. </div>
  598. </div>
  599. <div id="[]=-procs-all">
  600. <div id="[]=,JsonNode,string,JsonNode">
  601. <dt><pre><span class="Keyword">proc</span> <a href="#%5B%5D%3D%2CJsonNode%2Cstring%2CJsonNode"><span class="Identifier">`[]=`</span></a><span class="Other">(</span><span class="Identifier">obj</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">val</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  602. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  603. <dd>
  604. Sets a field from a <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span></span></tt>.
  605. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L394" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  606. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L394" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  607. </dd>
  608. </div>
  609. </div>
  610. <div id="add-procs-all">
  611. <div id="add,JsonNode,JsonNode">
  612. <dt><pre><span class="Keyword">proc</span> <a href="#add%2CJsonNode%2CJsonNode"><span class="Identifier">add</span></a><span class="Other">(</span><span class="Identifier">father</span><span class="Other">,</span> <span class="Identifier">child</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  613. <dd>
  614. Adds <tt class="docutils literal"><span class="pre"><span class="Identifier">child</span></span></tt> to a JArray node <tt class="docutils literal"><span class="pre"><span class="Identifier">father</span></span></tt>.
  615. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L305" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  616. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L305" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  617. </dd>
  618. </div>
  619. <div id="add,JsonNode,string,JsonNode">
  620. <dt><pre><span class="Keyword">proc</span> <a href="#add%2CJsonNode%2Cstring%2CJsonNode"><span class="Identifier">add</span></a><span class="Other">(</span><span class="Identifier">obj</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">val</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  621. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  622. <dd>
  623. Sets a field from a <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span></span></tt>.
  624. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L310" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  625. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L310" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  626. </dd>
  627. </div>
  628. </div>
  629. <div id="contains-procs-all">
  630. <div id="contains,JsonNode,string">
  631. <dt><pre><span class="Keyword">proc</span> <a href="#contains%2CJsonNode%2Cstring"><span class="Identifier">contains</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  632. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  633. <dd>
  634. Checks if <tt class="docutils literal"><span class="pre"><span class="Identifier">key</span></span></tt> exists in <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>.
  635. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L571" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  636. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L571" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  637. </dd>
  638. </div>
  639. <div id="contains,JsonNode,JsonNode">
  640. <dt><pre><span class="Keyword">proc</span> <a href="#contains%2CJsonNode%2CJsonNode"><span class="Identifier">contains</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">val</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  641. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  642. <dd>
  643. Checks if <tt class="docutils literal"><span class="pre"><span class="Identifier">val</span></span></tt> exists in array <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>.
  644. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L576" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  645. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L576" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  646. </dd>
  647. </div>
  648. </div>
  649. <div id="copy-procs-all">
  650. <div id="copy,JsonNode">
  651. <dt><pre><span class="Keyword">proc</span> <a href="#copy%2CJsonNode"><span class="Identifier">copy</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  652. <dd>
  653. Performs a deep copy of <tt class="docutils literal"><span class="pre"><span class="Identifier">p</span></span></tt>.
  654. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L639" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  655. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L639" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  656. </dd>
  657. </div>
  658. </div>
  659. <div id="delete-procs-all">
  660. <div id="delete,JsonNode,string">
  661. <dt><pre><span class="Keyword">proc</span> <a href="#delete%2CJsonNode%2Cstring"><span class="Identifier">delete</span></a><span class="Other">(</span><span class="Identifier">obj</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  662. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  663. <dd>
  664. Deletes <tt class="docutils literal"><span class="pre"><span class="Identifier">obj</span><span class="Punctuation">[</span><span class="Identifier">key</span><span class="Punctuation">]</span></span></tt>.
  665. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L632" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  666. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L632" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  667. </dd>
  668. </div>
  669. </div>
  670. <div id="escapeJson-procs-all">
  671. <div id="escapeJson,string">
  672. <dt><pre><span class="Keyword">proc</span> <a href="#escapeJson%2Cstring"><span class="Identifier">escapeJson</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  673. <dd>
  674. Converts a string <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> to its JSON representation with quotes.
  675. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L703" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  676. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L703" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  677. </dd>
  678. </div>
  679. <div id="escapeJson,string,string">
  680. <dt><pre><span class="Keyword">proc</span> <a href="#escapeJson%2Cstring%2Cstring"><span class="Identifier">escapeJson</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">result</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  681. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  682. <dd>
  683. Converts a string <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> to its JSON representation with quotes. Appends to <tt class="docutils literal"><span class="pre"><span class="Identifier">result</span></span></tt>.
  684. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L696" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  685. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L696" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  686. </dd>
  687. </div>
  688. </div>
  689. <div id="escapeJsonUnquoted-procs-all">
  690. <div id="escapeJsonUnquoted,string">
  691. <dt><pre><span class="Keyword">proc</span> <a href="#escapeJsonUnquoted%2Cstring"><span class="Identifier">escapeJsonUnquoted</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  692. <dd>
  693. Converts a string <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> to its JSON representation without quotes.
  694. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L691" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  695. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L691" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  696. </dd>
  697. </div>
  698. <div id="escapeJsonUnquoted,string,string">
  699. <dt><pre><span class="Keyword">proc</span> <a href="#escapeJsonUnquoted%2Cstring%2Cstring"><span class="Identifier">escapeJsonUnquoted</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">result</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  700. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  701. <dd>
  702. Converts a string <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> to its JSON representation without quotes. Appends to <tt class="docutils literal"><span class="pre"><span class="Identifier">result</span></span></tt>.
  703. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L674" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  704. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L674" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  705. </dd>
  706. </div>
  707. </div>
  708. <div id="getBiggestInt-procs-all">
  709. <div id="getBiggestInt,JsonNode,BiggestInt">
  710. <dt><pre><span class="Keyword">proc</span> <a href="#getBiggestInt%2CJsonNode%2CBiggestInt"><span class="Identifier">getBiggestInt</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">default</span><span class="Other">:</span> <a href="ctypes.html#BiggestInt"><span class="Identifier">BiggestInt</span></a> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <a href="ctypes.html#BiggestInt"><span class="Identifier">BiggestInt</span></a> {.
  711. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  712. <dd>
  713. <p>Retrieves the BiggestInt value of a <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span> <span class="Identifier">JsonNode</span></span></tt>.</p>
  714. <p>Returns <tt class="docutils literal"><span class="pre"><span class="Identifier">default</span></span></tt> if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is not a <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span></span></tt>, or if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is nil.</p>
  715. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L265" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  716. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L265" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  717. </dd>
  718. </div>
  719. </div>
  720. <div id="getBool-procs-all">
  721. <div id="getBool,JsonNode,bool">
  722. <dt><pre><span class="Keyword">proc</span> <a href="#getBool%2CJsonNode%2Cbool"><span class="Identifier">getBool</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">default</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  723. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  724. <dd>
  725. <p>Retrieves the bool value of a <tt class="docutils literal"><span class="pre"><span class="Identifier">JBool</span> <span class="Identifier">JsonNode</span></span></tt>.</p>
  726. <p>Returns <tt class="docutils literal"><span class="pre"><span class="Identifier">default</span></span></tt> if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is not a <tt class="docutils literal"><span class="pre"><span class="Identifier">JBool</span></span></tt>, or if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is nil.</p>
  727. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L282" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  728. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L282" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  729. </dd>
  730. </div>
  731. </div>
  732. <div id="getElems-procs-all">
  733. <div id="getElems,JsonNode,seq[JsonNode]">
  734. <dt><pre><span class="Keyword">proc</span> <a href="#getElems%2CJsonNode%2Cseq%5BJsonNode%5D"><span class="Identifier">getElems</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">default</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Operator">@</span><span class="Other">[</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">]</span> {.
  735. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  736. <dd>
  737. <p>Retrieves the array of a <tt class="docutils literal"><span class="pre"><span class="Identifier">JArray</span> <span class="Identifier">JsonNode</span></span></tt>.</p>
  738. <p>Returns <tt class="docutils literal"><span class="pre"><span class="Identifier">default</span></span></tt> if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is not a <tt class="docutils literal"><span class="pre"><span class="Identifier">JArray</span></span></tt>, or if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is nil.</p>
  739. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L298" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  740. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L298" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  741. </dd>
  742. </div>
  743. </div>
  744. <div id="getFields-procs-all">
  745. <div id="getFields,JsonNode">
  746. <dt><pre><span class="Keyword">proc</span> <a href="#getFields%2CJsonNode"><span class="Identifier">getFields</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">default</span> <span class="Other">=</span> <span class="Identifier">initOrderedTable</span><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">,</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">]</span><span class="Other">(</span><span class="DecNumber">2</span><span class="Other">)</span><span class="Other">)</span><span class="Other">:</span> <a href="tables.html#OrderedTable"><span class="Identifier">OrderedTable</span></a><span class="Other">[</span>
  747. <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">,</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  748. <dd>
  749. <p>Retrieves the key, value pairs of a <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span> <span class="Identifier">JsonNode</span></span></tt>.</p>
  750. <p>Returns <tt class="docutils literal"><span class="pre"><span class="Identifier">default</span></span></tt> if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is not a <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span></span></tt>, or if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is nil.</p>
  751. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L289" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  752. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L289" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  753. </dd>
  754. </div>
  755. </div>
  756. <div id="getFloat-procs-all">
  757. <div id="getFloat,JsonNode,float">
  758. <dt><pre><span class="Keyword">proc</span> <a href="#getFloat%2CJsonNode%2Cfloat"><span class="Identifier">getFloat</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">default</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a> <span class="Other">=</span> <span class="FloatNumber">0.0</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  759. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  760. <dd>
  761. <p>Retrieves the float value of a <tt class="docutils literal"><span class="pre"><span class="Identifier">JFloat</span> <span class="Identifier">JsonNode</span></span></tt>.</p>
  762. <p>Returns <tt class="docutils literal"><span class="pre"><span class="Identifier">default</span></span></tt> if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is not a <tt class="docutils literal"><span class="pre"><span class="Identifier">JFloat</span></span></tt> or <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span></span></tt>, or if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is nil.</p>
  763. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L272" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  764. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L272" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  765. </dd>
  766. </div>
  767. </div>
  768. <div id="getInt-procs-all">
  769. <div id="getInt,JsonNode,int">
  770. <dt><pre><span class="Keyword">proc</span> <a href="#getInt%2CJsonNode%2Cint"><span class="Identifier">getInt</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">default</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  771. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  772. <dd>
  773. <p>Retrieves the int value of a <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span> <span class="Identifier">JsonNode</span></span></tt>.</p>
  774. <p>Returns <tt class="docutils literal"><span class="pre"><span class="Identifier">default</span></span></tt> if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is not a <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span></span></tt>, or if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is nil.</p>
  775. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L258" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  776. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L258" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  777. </dd>
  778. </div>
  779. </div>
  780. <div id="getOrDefault-procs-all">
  781. <div id="getOrDefault,JsonNode,string">
  782. <dt><pre><span class="Keyword">proc</span> <a href="#getOrDefault%2CJsonNode%2Cstring"><span class="Identifier">getOrDefault</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  783. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  784. <dd>
  785. Gets a field from a <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>. If <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt> is nil or not an object or value at <tt class="docutils literal"><span class="pre"><span class="Identifier">key</span></span></tt> does not exist, returns nil
  786. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L609" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  787. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L609" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  788. </dd>
  789. </div>
  790. </div>
  791. <div id="getStr-procs-all">
  792. <div id="getStr,JsonNode,string">
  793. <dt><pre><span class="Keyword">proc</span> <a href="#getStr%2CJsonNode%2Cstring"><span class="Identifier">getStr</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">default</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  794. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  795. <dd>
  796. <p>Retrieves the string value of a <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span> <span class="Identifier">JsonNode</span></span></tt>.</p>
  797. <p>Returns <tt class="docutils literal"><span class="pre"><span class="Identifier">default</span></span></tt> if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is not a <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span></span></tt>, or if <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is nil.</p>
  798. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L251" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  799. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L251" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  800. </dd>
  801. </div>
  802. </div>
  803. <div id="hash-procs-all">
  804. <div id="hash,JsonNode">
  805. <dt><pre><span class="Keyword">proc</span> <a href="#hash%2CJsonNode"><span class="Identifier">hash</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="hashes.html#Hash"><span class="Identifier">Hash</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span>
  806. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  807. <dd>
  808. Compute the hash for a JSON node
  809. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L485" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  810. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L485" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  811. </dd>
  812. </div>
  813. <div id="hash,OrderedTable[string,JsonNode]">
  814. <dt><pre><span class="Keyword">proc</span> <a href="#hash%2COrderedTable%5Bstring%2CJsonNode%5D"><span class="Identifier">hash</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="tables.html#OrderedTable"><span class="Identifier">OrderedTable</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">,</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="hashes.html#Hash"><span class="Identifier">Hash</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span>
  815. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  816. <dd>
  817. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L483" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  818. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L483" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  819. </dd>
  820. </div>
  821. </div>
  822. <div id="hasKey-procs-all">
  823. <div id="hasKey,JsonNode,string">
  824. <dt><pre><span class="Keyword">proc</span> <a href="#hasKey%2CJsonNode%2Cstring"><span class="Identifier">hasKey</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  825. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  826. <dd>
  827. Checks if <tt class="docutils literal"><span class="pre"><span class="Identifier">key</span></span></tt> exists in <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>.
  828. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L566" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  829. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L566" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  830. </dd>
  831. </div>
  832. </div>
  833. <div id="len-procs-all">
  834. <div id="len,JsonNode">
  835. <dt><pre><span class="Keyword">proc</span> <a href="#len%2CJsonNode"><span class="Identifier">len</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  836. <dd>
  837. If <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is a <tt class="docutils literal"><span class="pre"><span class="Identifier">JArray</span></span></tt>, it returns the number of elements. If <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt> is a <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span></span></tt>, it returns the number of pairs. Else it returns 0.
  838. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L509" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  839. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L509" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  840. </dd>
  841. </div>
  842. </div>
  843. <div id="newJArray-procs-all">
  844. <div id="newJArray">
  845. <dt><pre><span class="Keyword">proc</span> <a href="#newJArray"><span class="Identifier">newJArray</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  846. <dd>
  847. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JArray</span> <span class="Identifier">JsonNode</span></span></tt>
  848. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L247" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  849. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L247" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  850. </dd>
  851. </div>
  852. </div>
  853. <div id="newJBool-procs-all">
  854. <div id="newJBool,bool">
  855. <dt><pre><span class="Keyword">proc</span> <a href="#newJBool%2Cbool"><span class="Identifier">newJBool</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  856. <dd>
  857. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JBool</span> <span class="Identifier">JsonNode</span></span></tt>.
  858. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L235" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  859. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L235" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  860. </dd>
  861. </div>
  862. </div>
  863. <div id="newJFloat-procs-all">
  864. <div id="newJFloat,float">
  865. <dt><pre><span class="Keyword">proc</span> <a href="#newJFloat%2Cfloat"><span class="Identifier">newJFloat</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  866. <dd>
  867. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JFloat</span> <span class="Identifier">JsonNode</span></span></tt>.
  868. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L231" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  869. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L231" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  870. </dd>
  871. </div>
  872. </div>
  873. <div id="newJInt-procs-all">
  874. <div id="newJInt,BiggestInt">
  875. <dt><pre><span class="Keyword">proc</span> <a href="#newJInt%2CBiggestInt"><span class="Identifier">newJInt</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="ctypes.html#BiggestInt"><span class="Identifier">BiggestInt</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  876. <dd>
  877. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span> <span class="Identifier">JsonNode</span></span></tt>.
  878. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L227" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  879. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L227" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  880. </dd>
  881. </div>
  882. </div>
  883. <div id="newJNull-procs-all">
  884. <div id="newJNull">
  885. <dt><pre><span class="Keyword">proc</span> <a href="#newJNull"><span class="Identifier">newJNull</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  886. <dd>
  887. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JNull</span> <span class="Identifier">JsonNode</span></span></tt>.
  888. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L239" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  889. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L239" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  890. </dd>
  891. </div>
  892. </div>
  893. <div id="newJObject-procs-all">
  894. <div id="newJObject">
  895. <dt><pre><span class="Keyword">proc</span> <a href="#newJObject"><span class="Identifier">newJObject</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  896. <dd>
  897. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span> <span class="Identifier">JsonNode</span></span></tt>
  898. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L243" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  899. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L243" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  900. </dd>
  901. </div>
  902. </div>
  903. <div id="newJString-procs-all">
  904. <div id="newJString,string">
  905. <dt><pre><span class="Keyword">proc</span> <a href="#newJString%2Cstring"><span class="Identifier">newJString</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  906. <dd>
  907. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span> <span class="Identifier">JsonNode</span></span></tt>.
  908. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L216" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  909. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L216" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  910. </dd>
  911. </div>
  912. </div>
  913. <div id="parseFile-procs-all">
  914. <div id="parseFile,string">
  915. <dt><pre><span class="Keyword">proc</span> <a href="#parseFile%2Cstring"><span class="Identifier">parseFile</span></a><span class="Other">(</span><span class="Identifier">filename</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.
  916. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">JsonParsingError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span>
  917. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  918. <dd>
  919. Parses <tt class="docutils literal"><span class="pre"><span class="Identifier">file</span></span></tt> into a <tt class="docutils literal"><span class="pre"><span class="Identifier">JsonNode</span></span></tt>. If <tt class="docutils literal"><span class="pre"><span class="Identifier">file</span></span></tt> contains extra data, it will raise <tt class="docutils literal"><span class="pre"><span class="Identifier">JsonParsingError</span></span></tt>.
  920. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L1052" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  921. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L1052" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  922. </dd>
  923. </div>
  924. </div>
  925. <div id="parseJson-procs-all">
  926. <div id="parseJson,string">
  927. <dt><pre><span class="Keyword">proc</span> <a href="#parseJson%2Cstring"><span class="Identifier">parseJson</span></a><span class="Other">(</span><span class="Identifier">buffer</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">rawIntegers</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span> <span class="Identifier">rawFloats</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.
  928. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">JsonParsingError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span>
  929. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  930. <dd>
  931. Parses JSON from <tt class="docutils literal"><span class="pre"><span class="Identifier">buffer</span></span></tt>. If <tt class="docutils literal"><span class="pre"><span class="Identifier">buffer</span></span></tt> contains extra data, it will raise <tt class="docutils literal"><span class="pre"><span class="Identifier">JsonParsingError</span></span></tt>. If <tt class="docutils literal"><span class="pre"><span class="Identifier">rawIntegers</span></span></tt> is true, integer literals will not be converted to a <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span></span></tt> field but kept as raw numbers via <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span></span></tt>. If <tt class="docutils literal"><span class="pre"><span class="Identifier">rawFloats</span></span></tt> is true, floating point literals will not be converted to a <tt class="docutils literal"><span class="pre"><span class="Identifier">JFloat</span></span></tt> field but kept as raw numbers via <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span></span></tt>.
  932. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L1043" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  933. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L1043" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  934. </dd>
  935. </div>
  936. <div id="parseJson,Stream,string">
  937. <dt><pre><span class="Keyword">proc</span> <a href="#parseJson%2CStream%2Cstring"><span class="Identifier">parseJson</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="streams.html#Stream"><span class="Identifier">Stream</span></a><span class="Other">;</span> <span class="Identifier">filename</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">;</span> <span class="Identifier">rawIntegers</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span>
  938. <span class="Identifier">rawFloats</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.
  939. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">JsonParsingError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span>
  940. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  941. <dd>
  942. Parses from a stream <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> into a <tt class="docutils literal"><span class="pre"><span class="Identifier">JsonNode</span></span></tt>. <tt class="docutils literal"><span class="pre"><span class="Identifier">filename</span></span></tt> is only needed for nice error messages. If <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> contains extra data, it will raise <tt class="docutils literal"><span class="pre"><span class="Identifier">JsonParsingError</span></span></tt>. This closes the stream <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> after it's done. If <tt class="docutils literal"><span class="pre"><span class="Identifier">rawIntegers</span></span></tt> is true, integer literals will not be converted to a <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span></span></tt> field but kept as raw numbers via <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span></span></tt>. If <tt class="docutils literal"><span class="pre"><span class="Identifier">rawFloats</span></span></tt> is true, floating point literals will not be converted to a <tt class="docutils literal"><span class="pre"><span class="Identifier">JFloat</span></span></tt> field but kept as raw numbers via <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span></span></tt>.
  943. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L952" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  944. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L952" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  945. </dd>
  946. </div>
  947. </div>
  948. <div id="pretty-procs-all">
  949. <div id="pretty,JsonNode,int">
  950. <dt><pre><span class="Keyword">proc</span> <a href="#pretty%2CJsonNode%2Cint"><span class="Identifier">pretty</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">indent</span> <span class="Other">=</span> <span class="DecNumber">2</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  951. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  952. <dd>
  953. <p>Returns a JSON Representation of <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>, with indentation and on multiple lines.</p>
  954. <p>Similar to prettyprint in Python.</p>
  955. <p><strong class="examples_text">Example:</strong></p>
  956. <pre class="listing"><span class="Keyword">let</span> <span class="Identifier">j</span> <span class="Operator">=</span> <span class="Operator">%*</span> <span class="Punctuation">{</span><span class="StringLit">&quot;name&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;Isaac&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;books&quot;</span><span class="Punctuation">:</span> <span class="Punctuation">[</span><span class="StringLit">&quot;Robot Dreams&quot;</span><span class="Punctuation">]</span><span class="Punctuation">,</span>
  957. <span class="StringLit">&quot;details&quot;</span><span class="Punctuation">:</span> <span class="Punctuation">{</span><span class="StringLit">&quot;age&quot;</span><span class="Punctuation">:</span> <span class="DecNumber">35</span><span class="Punctuation">,</span> <span class="StringLit">&quot;pi&quot;</span><span class="Punctuation">:</span> <span class="FloatNumber">3.1415</span><span class="Punctuation">}</span><span class="Punctuation">}</span>
  958. <span class="Identifier">doAssert</span> <span class="Identifier">pretty</span><span class="Punctuation">(</span><span class="Identifier">j</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="LongStringLit">&quot;&quot;&quot;
  959. {
  960. &quot;name&quot;: &quot;Isaac&quot;,
  961. &quot;books&quot;: [
  962. &quot;Robot Dreams&quot;
  963. ],
  964. &quot;details&quot;: {
  965. &quot;age&quot;: 35,
  966. &quot;pi&quot;: 3.1415
  967. }
  968. }&quot;&quot;&quot;</span></pre>
  969. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L805" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  970. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L805" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  971. </dd>
  972. </div>
  973. </div>
  974. <div id="to-procs-all">
  975. <div id="to,JsonNode,typedesc[T]">
  976. <dt><pre><span class="Keyword">proc</span> <a href="#to%2CJsonNode%2Ctypedesc%5BT%5D"><span class="Identifier">to</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">t</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
  977. <dd>
  978. <p><span id="unmarshals_1">Unmarshals</span> the specified node into the object type specified.</p>
  979. <p>Known limitations:</p>
  980. <ul class="simple"><li>Heterogeneous arrays are not supported.</li>
  981. <li>Sets in object variants are not supported.</li>
  982. <li>Not nil annotations are not supported.</li>
  983. </ul>
  984. <p><strong class="examples_text">Example:</strong></p>
  985. <pre class="listing"><span class="Keyword">let</span> <span class="Identifier">jsonNode</span> <span class="Operator">=</span> <span class="Identifier">parseJson</span><span class="Punctuation">(</span><span class="LongStringLit">&quot;&quot;&quot;
  986. {
  987. &quot;person&quot;: {
  988. &quot;name&quot;: &quot;Nimmer&quot;,
  989. &quot;age&quot;: 21
  990. },
  991. &quot;list&quot;: [1, 2, 3, 4]
  992. }
  993. &quot;&quot;&quot;</span><span class="Punctuation">)</span>
  994. <span class="Keyword">type</span>
  995. <span class="Identifier">Person</span> <span class="Operator">=</span> <span class="Keyword">object</span>
  996. <span class="Identifier">name</span><span class="Punctuation">:</span> <span class="Identifier">string</span>
  997. <span class="Identifier">age</span><span class="Punctuation">:</span> <span class="Identifier">int</span>
  998. <span class="Identifier">Data</span> <span class="Operator">=</span> <span class="Keyword">object</span>
  999. <span class="Identifier">person</span><span class="Punctuation">:</span> <span class="Identifier">Person</span>
  1000. <span class="Identifier">list</span><span class="Punctuation">:</span> <span class="Identifier">seq</span><span class="Punctuation">[</span><span class="Identifier">int</span><span class="Punctuation">]</span>
  1001. <span class="Keyword">var</span> <span class="Identifier">data</span> <span class="Operator">=</span> <span class="Identifier">to</span><span class="Punctuation">(</span><span class="Identifier">jsonNode</span><span class="Punctuation">,</span> <span class="Identifier">Data</span><span class="Punctuation">)</span>
  1002. <span class="Identifier">doAssert</span> <span class="Identifier">data</span><span class="Operator">.</span><span class="Identifier">person</span><span class="Operator">.</span><span class="Identifier">name</span> <span class="Operator">==</span> <span class="StringLit">&quot;Nimmer&quot;</span>
  1003. <span class="Identifier">doAssert</span> <span class="Identifier">data</span><span class="Operator">.</span><span class="Identifier">person</span><span class="Operator">.</span><span class="Identifier">age</span> <span class="Operator">==</span> <span class="DecNumber">21</span>
  1004. <span class="Identifier">doAssert</span> <span class="Identifier">data</span><span class="Operator">.</span><span class="Identifier">list</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">]</span></pre>
  1005. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L1334" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1006. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L1334" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1007. </dd>
  1008. </div>
  1009. </div>
  1010. <div id="toUgly-procs-all">
  1011. <div id="toUgly,string,JsonNode">
  1012. <dt><pre><span class="Keyword">proc</span> <a href="#toUgly%2Cstring%2CJsonNode"><span class="Identifier">toUgly</span></a><span class="Other">(</span><span class="Identifier">result</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1013. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1014. <dd>
  1015. <p>Converts <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt> to its JSON Representation, without regard for human readability. Meant to improve <tt class="docutils literal"><span class="pre"><span class="Operator">$</span></span></tt> string conversion performance.</p>
  1016. <p>JSON representation is stored in the passed <tt class="docutils literal"><span class="pre"><span class="Identifier">result</span></span></tt></p>
  1017. <p>This provides higher efficiency than the <tt class="docutils literal"><span class="pre"><span class="Identifier">pretty</span></span></tt> procedure as it does <strong>not</strong> attempt to format the resulting JSON to make it human readable.</p>
  1018. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L708" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1019. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L708" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1020. </dd>
  1021. </div>
  1022. </div>
  1023. <div id="{}-procs-all">
  1024. <div id="{},JsonNode,varargs[int]">
  1025. <dt><pre><span class="Keyword">proc</span> <a href="#%7B%7D%2CJsonNode%2Cvarargs%5Bint%5D"><span class="Identifier">`{}`</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">index</span><span class="Other">:</span> <a href="system.html#varargs"><span class="Identifier">varargs</span></a><span class="Other">[</span><a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1026. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1027. <dd>
  1028. Traverses the node and gets the given value. If any of the indexes do not exist, returns <tt class="docutils literal"><span class="pre"><span class="Keyword">nil</span></span></tt>. Also returns <tt class="docutils literal"><span class="pre"><span class="Keyword">nil</span></span></tt> if one of the intermediate data structures is not an array.
  1029. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L599" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1030. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L599" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1031. </dd>
  1032. </div>
  1033. <div id="{},JsonNode,string">
  1034. <dt><pre><span class="Keyword">proc</span> <a href="#%7B%7D%2CJsonNode%2Cstring"><span class="Identifier">`{}`</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1035. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1036. <dd>
  1037. Gets a field from a <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>. If <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt> is nil or not an object or value at <tt class="docutils literal"><span class="pre"><span class="Identifier">key</span></span></tt> does not exist, returns nil
  1038. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L617" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1039. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L617" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1040. </dd>
  1041. </div>
  1042. <div id="{},JsonNode,varargs[string]">
  1043. <dt><pre><span class="Keyword">proc</span> <a href="#%7B%7D%2CJsonNode%2Cvarargs%5Bstring%5D"><span class="Identifier">`{}`</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">keys</span><span class="Other">:</span> <a href="system.html#varargs"><span class="Identifier">varargs</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1044. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1045. <dd>
  1046. <p>Traverses the node and gets the given value. If any of the keys do not exist, returns <tt class="docutils literal"><span class="pre"><span class="Keyword">nil</span></span></tt>. Also returns <tt class="docutils literal"><span class="pre"><span class="Keyword">nil</span></span></tt> if one of the intermediate data structures is not an object.</p>
  1047. <p>This proc can be used to create tree structures on the fly (sometimes called <span id="autovivification_1">autovivification</span>): </p>
  1048. <p><strong class="examples_text">Example:</strong></p>
  1049. <pre class="listing"><span class="Keyword">var</span> <span class="Identifier">myjson</span> <span class="Operator">=</span> <span class="Operator">%*</span> <span class="Punctuation">{</span><span class="StringLit">&quot;parent&quot;</span><span class="Punctuation">:</span> <span class="Punctuation">{</span><span class="StringLit">&quot;child&quot;</span><span class="Punctuation">:</span> <span class="Punctuation">{</span><span class="StringLit">&quot;grandchild&quot;</span><span class="Punctuation">:</span> <span class="DecNumber">1</span><span class="Punctuation">}</span><span class="Punctuation">}</span><span class="Punctuation">}</span>
  1050. <span class="Identifier">doAssert</span> <span class="Identifier">myjson</span><span class="Punctuation">{</span><span class="StringLit">&quot;parent&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;child&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;grandchild&quot;</span><span class="Punctuation">}</span> <span class="Operator">==</span> <span class="Identifier">newJInt</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span></pre>
  1051. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L581" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1052. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L581" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1053. </dd>
  1054. </div>
  1055. </div>
  1056. <div id="{}=-procs-all">
  1057. <div id="{}=,JsonNode,varargs[string],JsonNode">
  1058. <dt><pre><span class="Keyword">proc</span> <a href="#%7B%7D%3D%2CJsonNode%2Cvarargs%5Bstring%5D%2CJsonNode"><span class="Identifier">`{}=`</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">;</span> <span class="Identifier">keys</span><span class="Other">:</span> <a href="system.html#varargs"><span class="Identifier">varargs</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">value</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span> {.
  1059. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">KeyError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1060. <dd>
  1061. Traverses the node and tries to set the value at the given location to <tt class="docutils literal"><span class="pre"><span class="Identifier">value</span></span></tt>. If any of the keys are missing, they are added.
  1062. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L622" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1063. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L622" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1064. </dd>
  1065. </div>
  1066. </div>
  1067. </dl>
  1068. </div>
  1069. <div class="section" id="15">
  1070. <h1><a class="toc-backref" href="#15">Iterators</a></h1>
  1071. <dl class="item">
  1072. <div id="items-iterators-all">
  1073. <div id="items.i,JsonNode">
  1074. <dt><pre><span class="Keyword">iterator</span> <a href="#items.i%2CJsonNode"><span class="Identifier">items</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1075. <dd>
  1076. Iterator for the items of <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>. <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt> has to be a JArray.
  1077. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L832" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1078. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L832" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1079. </dd>
  1080. </div>
  1081. </div>
  1082. <div id="keys-iterators-all">
  1083. <div id="keys.i,JsonNode">
  1084. <dt><pre><span class="Keyword">iterator</span> <a href="#keys.i%2CJsonNode"><span class="Identifier">keys</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1085. <dd>
  1086. Iterator for the keys in <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>. <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt> has to be a JObject.
  1087. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L851" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1088. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L851" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1089. </dd>
  1090. </div>
  1091. </div>
  1092. <div id="mitems-iterators-all">
  1093. <div id="mitems.i,JsonNode">
  1094. <dt><pre><span class="Keyword">iterator</span> <a href="#mitems.i%2CJsonNode"><span class="Identifier">mitems</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1095. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1096. <dd>
  1097. Iterator for the items of <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>. <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt> has to be a JArray. Items can be modified.
  1098. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L838" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1099. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L838" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1100. </dd>
  1101. </div>
  1102. </div>
  1103. <div id="mpairs-iterators-all">
  1104. <div id="mpairs.i,JsonNode">
  1105. <dt><pre><span class="Keyword">iterator</span> <a href="#mpairs.i%2CJsonNode"><span class="Identifier">mpairs</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">,</span> <span class="Identifier">val</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">]</span> {.
  1106. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1107. <dd>
  1108. Iterator for the child elements of <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>. <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt> has to be a JObject. Values can be modified
  1109. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L857" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1110. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L857" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1111. </dd>
  1112. </div>
  1113. </div>
  1114. <div id="pairs-iterators-all">
  1115. <div id="pairs.i,JsonNode">
  1116. <dt><pre><span class="Keyword">iterator</span> <a href="#pairs.i%2CJsonNode"><span class="Identifier">pairs</span></a><span class="Other">(</span><span class="Identifier">node</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">,</span> <span class="Identifier">val</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1117. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1118. <dd>
  1119. Iterator for the child elements of <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt>. <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt> has to be a JObject.
  1120. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L845" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1121. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L845" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1122. </dd>
  1123. </div>
  1124. </div>
  1125. <div id="parseJsonFragments-iterators-all">
  1126. <div id="parseJsonFragments.i,Stream,string">
  1127. <dt><pre><span class="Keyword">iterator</span> <a href="#parseJsonFragments.i%2CStream%2Cstring"><span class="Identifier">parseJsonFragments</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="streams.html#Stream"><span class="Identifier">Stream</span></a><span class="Other">;</span> <span class="Identifier">filename</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">;</span>
  1128. <span class="Identifier">rawIntegers</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">;</span> <span class="Identifier">rawFloats</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a> {.
  1129. <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">JsonParsingError</span><span class="Other">,</span> <span class="Identifier">ValueError</span><span class="Other">]</span><span class="Other">,</span>
  1130. <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1131. <dd>
  1132. Parses from a stream <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> into <tt class="docutils literal"><span class="pre"><span class="Identifier">JsonNodes</span></span></tt>. <tt class="docutils literal"><span class="pre"><span class="Identifier">filename</span></span></tt> is only needed for nice error messages. The JSON fragments are separated by whitespace. This can be substantially faster than the comparable loop <tt class="docutils literal"><span class="pre"><span class="Keyword">for</span> <span class="Identifier">x</span> <span class="Keyword">in</span> <span class="Identifier">splitWhitespace</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Keyword">yield</span> <span class="Identifier">parseJson</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>. This closes the stream <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> after it's done. If <tt class="docutils literal"><span class="pre"><span class="Identifier">rawIntegers</span></span></tt> is true, integer literals will not be converted to a <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span></span></tt> field but kept as raw numbers via <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span></span></tt>. If <tt class="docutils literal"><span class="pre"><span class="Identifier">rawFloats</span></span></tt> is true, floating point literals will not be converted to a <tt class="docutils literal"><span class="pre"><span class="Identifier">JFloat</span></span></tt> field but kept as raw numbers via <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span></span></tt>.
  1133. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L932" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1134. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L932" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1135. </dd>
  1136. </div>
  1137. </div>
  1138. </dl>
  1139. </div>
  1140. <div class="section" id="17">
  1141. <h1><a class="toc-backref" href="#17">Macros</a></h1>
  1142. <dl class="item">
  1143. <div id="%*-macros-all">
  1144. <div id="%*.m,untyped">
  1145. <dt><pre><span class="Keyword">macro</span> <a href="#%25%2A.m%2Cuntyped"><span class="Identifier">`%*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a></pre></dt>
  1146. <dd>
  1147. Convert an expression to a JsonNode directly, without having to specify <tt class="docutils literal"><span class="pre"><span class="Operator">%</span></span></tt> for every element.
  1148. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L442" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1149. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L442" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1150. </dd>
  1151. </div>
  1152. </div>
  1153. <div id="isRefSkipDistinct-macros-all">
  1154. <div id="isRefSkipDistinct.m,typed">
  1155. <dt><pre><span class="Keyword">macro</span> <a href="#isRefSkipDistinct.m%2Ctyped"><span class="Identifier">isRefSkipDistinct</span></a><span class="Other">(</span><span class="Identifier">arg</span><span class="Other">:</span> <a href="system.html#typed"><span class="Identifier">typed</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a></pre></dt>
  1156. <dd>
  1157. internal only, do not use
  1158. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L1074" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1159. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L1074" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1160. </dd>
  1161. </div>
  1162. </div>
  1163. </dl>
  1164. </div>
  1165. <div class="section" id="18">
  1166. <h1><a class="toc-backref" href="#18">Templates</a></h1>
  1167. <dl class="item">
  1168. <div id="%-templates-all">
  1169. <div id="%.t,JsonNode">
  1170. <dt><pre><span class="Keyword">template</span> <a href="#%25.t%2CJsonNode"><span class="Identifier">`%`</span></a><span class="Other">(</span><span class="Identifier">j</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a><span class="Other">)</span><span class="Other">:</span> <a href="json.html#JsonNode"><span class="Identifier">JsonNode</span></a></pre></dt>
  1171. <dd>
  1172. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L364" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1173. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L364" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1174. </dd>
  1175. </div>
  1176. </div>
  1177. </dl>
  1178. </div>
  1179. </div>
  1180. </div>
  1181. <div class="twelve-columns footer">
  1182. <span class="nim-sprite"></span>
  1183. <br>
  1184. <small style="color: var(--hint);">Made with Nim. Generated: 2025-03-15 14:13:23 UTC</small>
  1185. </div>
  1186. </div>
  1187. </div>
  1188. <script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
  1189. </body>
  1190. </html>