json.html 176 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495
  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. <li>
  280. <a class="reference reference-toplevel" href="#19" id="69">Exports</a>
  281. </li>
  282. </ul>
  283. </div>
  284. <div class="nine columns" id="content">
  285. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  286. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  287. <div id="tocRoot"></div>
  288. <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.
  289. <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>
  290. <li><a class="reference external" href="jsonutils.html">std/jsonutils</a></li>
  291. <li><a class="reference external" href="marshal.html">std/marshal</a></li>
  292. <li><a class="reference external" href="jscore.html">std/jscore</a></li>
  293. </ul>
  294. <h1><a class="toc-backref" id="overview" href="#overview">Overview</a></h1>
  295. <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>
  296. <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>
  297. <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>
  298. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  299. <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>
  300. <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>
  301. <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>
  302. <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>
  303. <ul class="simple"><li><tt class="docutils literal"><span class="pre"><span class="Identifier">getInt</span></span></tt></li>
  304. <li><tt class="docutils literal"><span class="pre"><span class="Identifier">getFloat</span></span></tt></li>
  305. <li><tt class="docutils literal"><span class="pre"><span class="Identifier">getStr</span></span></tt></li>
  306. <li><tt class="docutils literal"><span class="pre"><span class="Identifier">getBool</span></span></tt></li>
  307. </ul>
  308. <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>
  309. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  310. <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>
  311. <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>
  312. <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>
  313. <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>
  314. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  315. <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>
  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">getInt</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">0</span>
  317. <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>
  318. <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>
  319. <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>
  320. <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>
  321. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  322. <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>
  323. <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>
  324. <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>
  325. <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>
  326. <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>
  327. <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>
  328. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  329. <span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">options</span>
  330. <span class="Keyword">type</span>
  331. <span class="Identifier">User</span> <span class="Operator">=</span> <span class="Keyword">object</span>
  332. <span class="Identifier">name</span><span class="Punctuation">:</span> <span class="Identifier">string</span>
  333. <span class="Identifier">age</span><span class="Punctuation">:</span> <span class="Identifier">int</span>
  334. <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>
  335. <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>
  336. <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>
  337. <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>
  338. <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>
  339. <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>
  340. <p><pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  341. <span class="Keyword">var</span> <span class="Identifier">hisName</span> <span class="Operator">=</span> <span class="StringLit">&quot;John&quot;</span>
  342. <span class="Keyword">let</span> <span class="Identifier">herAge</span> <span class="Operator">=</span> <span class="DecNumber">31</span>
  343. <span class="Keyword">var</span> <span class="Identifier">j</span> <span class="Operator">=</span> <span class="Operator">%*</span>
  344. <span class="Punctuation">[</span>
  345. <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>
  346. <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>
  347. <span class="Punctuation">]</span>
  348. <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>
  349. <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>
  350. <span class="Identifier">echo</span> <span class="Identifier">j2</span></pre></p>
  351. <p>See also: std/jsonutils for hookable json serialization/deserialization of arbitrary types.</p>
  352. <p><strong class="examples_text">Example:</strong></p>
  353. <pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  354. <span class="Comment">## Note: for JObject, key ordering is preserved, unlike in some languages,</span>
  355. <span class="Comment">## this is convenient for some use cases. Example:</span>
  356. <span class="Keyword">type</span> <span class="Identifier">Foo</span> <span class="Operator">=</span> <span class="Keyword">object</span>
  357. <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>
  358. <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>
  359. <div class="section" id="6">
  360. <h1><a class="toc-backref" href="#6">Imports</a></h1>
  361. <dl class="item">
  362. <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>
  363. </dl>
  364. </div>
  365. <div class="section" id="7">
  366. <h1><a class="toc-backref" href="#7">Types</a></h1>
  367. <dl class="item">
  368. <div id="JsonNode">
  369. <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>
  370. <dd>
  371. JSON node
  372. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L194" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  373. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L194" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  374. </dd>
  375. </div>
  376. <div id="JsonNodeKind">
  377. <dt><pre><a href="json.html#JsonNodeKind"><span class="Identifier">JsonNodeKind</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
  378. <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>
  379. <dd>
  380. possible JSON node types
  381. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L185" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  382. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L185" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  383. </dd>
  384. </div>
  385. <div id="JsonNodeObj">
  386. <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>
  387. <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>
  388. <span class="Keyword">of</span> <span class="Identifier">JString</span><span class="Other">:</span>
  389. <span class="Identifier">str</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a>
  390. <span class="Keyword">of</span> <span class="Identifier">JInt</span><span class="Other">:</span>
  391. <span class="Identifier">num</span><span class="Operator">*</span><span class="Other">:</span> <a href="ctypes.html#BiggestInt"><span class="Identifier">BiggestInt</span></a>
  392. <span class="Keyword">of</span> <span class="Identifier">JFloat</span><span class="Other">:</span>
  393. <span class="Identifier">fnum</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a>
  394. <span class="Keyword">of</span> <span class="Identifier">JBool</span><span class="Other">:</span>
  395. <span class="Identifier">bval</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a>
  396. <span class="Keyword">of</span> <span class="Identifier">JNull</span><span class="Other">:</span>
  397. <span class="Keyword">nil</span>
  398. <span class="Keyword">of</span> <span class="Identifier">JObject</span><span class="Other">:</span>
  399. <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>
  400. <span class="Keyword">of</span> <span class="Identifier">JArray</span><span class="Other">:</span>
  401. <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>
  402. <dd>
  403. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L195" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  404. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L195" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  405. </dd>
  406. </div>
  407. </dl>
  408. </div>
  409. <div class="section" id="12">
  410. <h1><a class="toc-backref" href="#12">Procs</a></h1>
  411. <dl class="item">
  412. <div id="$-procs-all">
  413. <div id="$,JsonNode">
  414. <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>
  415. <dd>
  416. Converts <tt class="docutils literal"><span class="pre"><span class="Identifier">node</span></span></tt> to its JSON Representation on one line.
  417. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L827" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  418. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L827" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  419. </dd>
  420. </div>
  421. </div>
  422. <div id="%-procs-all">
  423. <div id="%,bool">
  424. <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>
  425. <dd>
  426. 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>.
  427. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L354" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  428. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L354" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  429. </dd>
  430. </div>
  431. <div id="%,openArray[tuple[string,JsonNode]]">
  432. <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> {.
  433. <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>
  434. <dd>
  435. 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>
  436. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L358" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  437. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L358" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  438. </dd>
  439. </div>
  440. <div id="%,BiggestInt">
  441. <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>
  442. <dd>
  443. 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>.
  444. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L337" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  445. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L337" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  446. </dd>
  447. </div>
  448. <div id="%,BiggestUInt">
  449. <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>
  450. <dd>
  451. 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>.
  452. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L330" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  453. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L330" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  454. </dd>
  455. </div>
  456. <div id="%,float">
  457. <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>
  458. <dd>
  459. 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>.
  460. <p><strong class="examples_text">Example:</strong></p>
  461. <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>
  462. <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>
  463. <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>
  464. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L341" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  465. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L341" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  466. </dd>
  467. </div>
  468. <div id="%,int">
  469. <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>
  470. <dd>
  471. 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>.
  472. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L326" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  473. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L326" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  474. </dd>
  475. </div>
  476. <div id="%,uint">
  477. <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>
  478. <dd>
  479. 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>.
  480. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L319" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  481. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L319" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  482. </dd>
  483. </div>
  484. <div id="%_2">
  485. <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>
  486. <dd>
  487. 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>.
  488. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L411" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  489. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L411" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  490. </dd>
  491. </div>
  492. <div id="%,ref.">
  493. <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>
  494. <dd>
  495. 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>
  496. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L404" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  497. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L404" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  498. </dd>
  499. </div>
  500. <div id="%,string">
  501. <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>
  502. <dd>
  503. 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>.
  504. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L315" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  505. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L315" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  506. </dd>
  507. </div>
  508. <div id="%,T">
  509. <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>
  510. <dd>
  511. Construct JsonNode from tuples and objects.
  512. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L399" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  513. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L399" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  514. </dd>
  515. </div>
  516. <div id="%,openArray[T]">
  517. <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>
  518. <dd>
  519. 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>
  520. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L366" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  521. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L366" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  522. </dd>
  523. </div>
  524. <div id="%,Option[T]">
  525. <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>
  526. <dd>
  527. 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.
  528. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L376" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  529. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L376" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  530. </dd>
  531. </div>
  532. <div id="%">
  533. <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>
  534. <dd>
  535. 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>.
  536. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L371" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  537. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L371" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  538. </dd>
  539. </div>
  540. </div>
  541. <div id="==-procs-all">
  542. <div id="==,JsonNode,JsonNode">
  543. <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>
  544. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  545. <dd>
  546. Check two nodes for equality
  547. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L447" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  548. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L447" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  549. </dd>
  550. </div>
  551. </div>
  552. <div id="[]-procs-all">
  553. <div id="[],JsonNode,BackwardsIndex">
  554. <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>
  555. <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>
  556. <dd>
  557. <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>
  558. <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>
  559. <p><strong class="examples_text">Example:</strong></p>
  560. <pre class="listing"><span class="Keyword">let</span>
  561. <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>
  562. <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>
  563. <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>
  564. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L535" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  565. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L535" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  566. </dd>
  567. </div>
  568. <div id="[],JsonNode,int">
  569. <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>
  570. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  571. <dd>
  572. 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.
  573. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L527" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  574. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L527" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  575. </dd>
  576. </div>
  577. <div id="[],JsonNode,string">
  578. <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>
  579. <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>
  580. <dd>
  581. 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.
  582. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L518" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  583. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L518" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  584. </dd>
  585. </div>
  586. <div id="[],JsonNode,HSlice[U,V]">
  587. <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>
  588. <dd>
  589. <p>Slice operation for JArray.</p>
  590. <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>
  591. <p><strong class="examples_text">Example:</strong></p>
  592. <pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">json</span>
  593. <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>
  594. <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>
  595. <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>
  596. <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>
  597. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L548" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  598. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L548" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  599. </dd>
  600. </div>
  601. </div>
  602. <div id="[]=-procs-all">
  603. <div id="[]=,JsonNode,string,JsonNode">
  604. <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>
  605. <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>
  606. <dd>
  607. Sets a field from a <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span></span></tt>.
  608. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L394" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  609. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L394" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  610. </dd>
  611. </div>
  612. </div>
  613. <div id="add-procs-all">
  614. <div id="add,JsonNode,JsonNode">
  615. <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>
  616. <dd>
  617. 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>.
  618. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L305" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  619. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L305" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  620. </dd>
  621. </div>
  622. <div id="add,JsonNode,string,JsonNode">
  623. <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>
  624. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  625. <dd>
  626. Sets a field from a <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span></span></tt>.
  627. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L310" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  628. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L310" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  629. </dd>
  630. </div>
  631. </div>
  632. <div id="contains-procs-all">
  633. <div id="contains,JsonNode,string">
  634. <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>
  635. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  636. <dd>
  637. 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>.
  638. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L571" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  639. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L571" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  640. </dd>
  641. </div>
  642. <div id="contains,JsonNode,JsonNode">
  643. <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>
  644. <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>
  645. <dd>
  646. 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>.
  647. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L576" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  648. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L576" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  649. </dd>
  650. </div>
  651. </div>
  652. <div id="copy-procs-all">
  653. <div id="copy,JsonNode">
  654. <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>
  655. <dd>
  656. Performs a deep copy of <tt class="docutils literal"><span class="pre"><span class="Identifier">p</span></span></tt>.
  657. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L639" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  658. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L639" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  659. </dd>
  660. </div>
  661. </div>
  662. <div id="delete-procs-all">
  663. <div id="delete,JsonNode,string">
  664. <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>
  665. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  666. <dd>
  667. 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>.
  668. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L632" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  669. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L632" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  670. </dd>
  671. </div>
  672. </div>
  673. <div id="escapeJson-procs-all">
  674. <div id="escapeJson,string">
  675. <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>
  676. <dd>
  677. Converts a string <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> to its JSON representation with quotes.
  678. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L703" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  679. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L703" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  680. </dd>
  681. </div>
  682. <div id="escapeJson,string,string">
  683. <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>
  684. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  685. <dd>
  686. 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>.
  687. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L696" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  688. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L696" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  689. </dd>
  690. </div>
  691. </div>
  692. <div id="escapeJsonUnquoted-procs-all">
  693. <div id="escapeJsonUnquoted,string">
  694. <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>
  695. <dd>
  696. Converts a string <tt class="docutils literal"><span class="pre"><span class="Identifier">s</span></span></tt> to its JSON representation without quotes.
  697. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L691" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  698. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L691" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  699. </dd>
  700. </div>
  701. <div id="escapeJsonUnquoted,string,string">
  702. <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>
  703. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  704. <dd>
  705. 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>.
  706. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L674" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  707. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L674" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  708. </dd>
  709. </div>
  710. </div>
  711. <div id="getBiggestInt-procs-all">
  712. <div id="getBiggestInt,JsonNode,BiggestInt">
  713. <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> {.
  714. <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>
  715. <dd>
  716. <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>
  717. <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>
  718. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L265" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  719. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L265" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  720. </dd>
  721. </div>
  722. </div>
  723. <div id="getBool-procs-all">
  724. <div id="getBool,JsonNode,bool">
  725. <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>
  726. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  727. <dd>
  728. <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>
  729. <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>
  730. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L282" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  731. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L282" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  732. </dd>
  733. </div>
  734. </div>
  735. <div id="getElems-procs-all">
  736. <div id="getElems,JsonNode,seq[JsonNode]">
  737. <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> {.
  738. <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>
  739. <dd>
  740. <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>
  741. <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>
  742. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L298" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  743. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L298" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  744. </dd>
  745. </div>
  746. </div>
  747. <div id="getFields-procs-all">
  748. <div id="getFields,JsonNode">
  749. <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>
  750. <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>
  751. <dd>
  752. <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>
  753. <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>
  754. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L289" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  755. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L289" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  756. </dd>
  757. </div>
  758. </div>
  759. <div id="getFloat-procs-all">
  760. <div id="getFloat,JsonNode,float">
  761. <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>
  762. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  763. <dd>
  764. <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>
  765. <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>
  766. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L272" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  767. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L272" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  768. </dd>
  769. </div>
  770. </div>
  771. <div id="getInt-procs-all">
  772. <div id="getInt,JsonNode,int">
  773. <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>
  774. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  775. <dd>
  776. <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>
  777. <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>
  778. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L258" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  779. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L258" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  780. </dd>
  781. </div>
  782. </div>
  783. <div id="getOrDefault-procs-all">
  784. <div id="getOrDefault,JsonNode,string">
  785. <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>
  786. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  787. <dd>
  788. 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
  789. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L609" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  790. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L609" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  791. </dd>
  792. </div>
  793. </div>
  794. <div id="getStr-procs-all">
  795. <div id="getStr,JsonNode,string">
  796. <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>
  797. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  798. <dd>
  799. <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>
  800. <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>
  801. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L251" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  802. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L251" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  803. </dd>
  804. </div>
  805. </div>
  806. <div id="hash-procs-all">
  807. <div id="hash,JsonNode">
  808. <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>
  809. <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>
  810. <dd>
  811. Compute the hash for a JSON node
  812. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L485" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  813. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L485" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  814. </dd>
  815. </div>
  816. <div id="hash,OrderedTable[string,JsonNode]">
  817. <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>
  818. <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>
  819. <dd>
  820. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L483" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  821. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L483" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  822. </dd>
  823. </div>
  824. </div>
  825. <div id="hasKey-procs-all">
  826. <div id="hasKey,JsonNode,string">
  827. <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>
  828. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  829. <dd>
  830. 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>.
  831. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L566" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  832. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L566" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  833. </dd>
  834. </div>
  835. </div>
  836. <div id="len-procs-all">
  837. <div id="len,JsonNode">
  838. <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>
  839. <dd>
  840. 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.
  841. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L509" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  842. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L509" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  843. </dd>
  844. </div>
  845. </div>
  846. <div id="newJArray-procs-all">
  847. <div id="newJArray">
  848. <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>
  849. <dd>
  850. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JArray</span> <span class="Identifier">JsonNode</span></span></tt>
  851. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L247" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  852. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L247" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  853. </dd>
  854. </div>
  855. </div>
  856. <div id="newJBool-procs-all">
  857. <div id="newJBool,bool">
  858. <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>
  859. <dd>
  860. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JBool</span> <span class="Identifier">JsonNode</span></span></tt>.
  861. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L235" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  862. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L235" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  863. </dd>
  864. </div>
  865. </div>
  866. <div id="newJFloat-procs-all">
  867. <div id="newJFloat,float">
  868. <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>
  869. <dd>
  870. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JFloat</span> <span class="Identifier">JsonNode</span></span></tt>.
  871. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L231" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  872. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L231" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  873. </dd>
  874. </div>
  875. </div>
  876. <div id="newJInt-procs-all">
  877. <div id="newJInt,BiggestInt">
  878. <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>
  879. <dd>
  880. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JInt</span> <span class="Identifier">JsonNode</span></span></tt>.
  881. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L227" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  882. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L227" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  883. </dd>
  884. </div>
  885. </div>
  886. <div id="newJNull-procs-all">
  887. <div id="newJNull">
  888. <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>
  889. <dd>
  890. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JNull</span> <span class="Identifier">JsonNode</span></span></tt>.
  891. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L239" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  892. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L239" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  893. </dd>
  894. </div>
  895. </div>
  896. <div id="newJObject-procs-all">
  897. <div id="newJObject">
  898. <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>
  899. <dd>
  900. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JObject</span> <span class="Identifier">JsonNode</span></span></tt>
  901. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L243" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  902. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L243" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  903. </dd>
  904. </div>
  905. </div>
  906. <div id="newJString-procs-all">
  907. <div id="newJString,string">
  908. <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>
  909. <dd>
  910. Creates a new <tt class="docutils literal"><span class="pre"><span class="Identifier">JString</span> <span class="Identifier">JsonNode</span></span></tt>.
  911. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L216" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  912. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L216" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  913. </dd>
  914. </div>
  915. </div>
  916. <div id="parseFile-procs-all">
  917. <div id="parseFile,string">
  918. <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> {.
  919. <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>
  920. <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>
  921. <dd>
  922. 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>.
  923. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L1052" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  924. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L1052" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  925. </dd>
  926. </div>
  927. </div>
  928. <div id="parseJson-procs-all">
  929. <div id="parseJson,string">
  930. <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> {.
  931. <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>
  932. <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>
  933. <dd>
  934. 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>.
  935. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L1043" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  936. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L1043" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  937. </dd>
  938. </div>
  939. <div id="parseJson,Stream,string">
  940. <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>
  941. <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> {.
  942. <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>
  943. <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>
  944. <dd>
  945. 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>.
  946. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L952" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  947. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L952" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  948. </dd>
  949. </div>
  950. </div>
  951. <div id="pretty-procs-all">
  952. <div id="pretty,JsonNode,int">
  953. <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>
  954. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  955. <dd>
  956. <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>
  957. <p>Similar to prettyprint in Python.</p>
  958. <p><strong class="examples_text">Example:</strong></p>
  959. <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>
  960. <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>
  961. <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;
  962. {
  963. &quot;name&quot;: &quot;Isaac&quot;,
  964. &quot;books&quot;: [
  965. &quot;Robot Dreams&quot;
  966. ],
  967. &quot;details&quot;: {
  968. &quot;age&quot;: 35,
  969. &quot;pi&quot;: 3.1415
  970. }
  971. }&quot;&quot;&quot;</span></pre>
  972. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L805" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  973. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L805" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  974. </dd>
  975. </div>
  976. </div>
  977. <div id="to-procs-all">
  978. <div id="to,JsonNode,typedesc[T]">
  979. <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>
  980. <dd>
  981. <p><span id="unmarshals_1">Unmarshals</span> the specified node into the object type specified.</p>
  982. <p>Known limitations:</p>
  983. <ul class="simple"><li>Heterogeneous arrays are not supported.</li>
  984. <li>Sets in object variants are not supported.</li>
  985. <li>Not nil annotations are not supported.</li>
  986. </ul>
  987. <p><strong class="examples_text">Example:</strong></p>
  988. <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;
  989. {
  990. &quot;person&quot;: {
  991. &quot;name&quot;: &quot;Nimmer&quot;,
  992. &quot;age&quot;: 21
  993. },
  994. &quot;list&quot;: [1, 2, 3, 4]
  995. }
  996. &quot;&quot;&quot;</span><span class="Punctuation">)</span>
  997. <span class="Keyword">type</span>
  998. <span class="Identifier">Person</span> <span class="Operator">=</span> <span class="Keyword">object</span>
  999. <span class="Identifier">name</span><span class="Punctuation">:</span> <span class="Identifier">string</span>
  1000. <span class="Identifier">age</span><span class="Punctuation">:</span> <span class="Identifier">int</span>
  1001. <span class="Identifier">Data</span> <span class="Operator">=</span> <span class="Keyword">object</span>
  1002. <span class="Identifier">person</span><span class="Punctuation">:</span> <span class="Identifier">Person</span>
  1003. <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>
  1004. <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>
  1005. <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>
  1006. <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>
  1007. <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>
  1008. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L1334" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1009. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L1334" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1010. </dd>
  1011. </div>
  1012. </div>
  1013. <div id="toUgly-procs-all">
  1014. <div id="toUgly,string,JsonNode">
  1015. <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>
  1016. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1017. <dd>
  1018. <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>
  1019. <p>JSON representation is stored in the passed <tt class="docutils literal"><span class="pre"><span class="Identifier">result</span></span></tt></p>
  1020. <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>
  1021. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L708" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1022. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L708" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1023. </dd>
  1024. </div>
  1025. </div>
  1026. <div id="{}-procs-all">
  1027. <div id="{},JsonNode,varargs[int]">
  1028. <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>
  1029. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1030. <dd>
  1031. 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.
  1032. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L599" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1033. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L599" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1034. </dd>
  1035. </div>
  1036. <div id="{},JsonNode,string">
  1037. <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>
  1038. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1039. <dd>
  1040. 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
  1041. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L617" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1042. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L617" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1043. </dd>
  1044. </div>
  1045. <div id="{},JsonNode,varargs[string]">
  1046. <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>
  1047. <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>
  1048. <dd>
  1049. <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>
  1050. <p>This proc can be used to create tree structures on the fly (sometimes called <span id="autovivification_1">autovivification</span>): </p>
  1051. <p><strong class="examples_text">Example:</strong></p>
  1052. <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>
  1053. <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>
  1054. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L581" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1055. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L581" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1056. </dd>
  1057. </div>
  1058. </div>
  1059. <div id="{}=-procs-all">
  1060. <div id="{}=,JsonNode,varargs[string],JsonNode">
  1061. <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> {.
  1062. <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>
  1063. <dd>
  1064. 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.
  1065. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L622" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1066. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L622" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1067. </dd>
  1068. </div>
  1069. </div>
  1070. </dl>
  1071. </div>
  1072. <div class="section" id="15">
  1073. <h1><a class="toc-backref" href="#15">Iterators</a></h1>
  1074. <dl class="item">
  1075. <div id="items-iterators-all">
  1076. <div id="items.i,JsonNode">
  1077. <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>
  1078. <dd>
  1079. 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.
  1080. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L832" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1081. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L832" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1082. </dd>
  1083. </div>
  1084. </div>
  1085. <div id="keys-iterators-all">
  1086. <div id="keys.i,JsonNode">
  1087. <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>
  1088. <dd>
  1089. 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.
  1090. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L851" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1091. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L851" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1092. </dd>
  1093. </div>
  1094. </div>
  1095. <div id="mitems-iterators-all">
  1096. <div id="mitems.i,JsonNode">
  1097. <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>
  1098. <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
  1099. <dd>
  1100. 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.
  1101. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L838" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1102. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L838" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1103. </dd>
  1104. </div>
  1105. </div>
  1106. <div id="mpairs-iterators-all">
  1107. <div id="mpairs.i,JsonNode">
  1108. <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> {.
  1109. <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>
  1110. <dd>
  1111. 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
  1112. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L857" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1113. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L857" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1114. </dd>
  1115. </div>
  1116. </div>
  1117. <div id="pairs-iterators-all">
  1118. <div id="pairs.i,JsonNode">
  1119. <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>
  1120. <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>
  1121. <dd>
  1122. 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.
  1123. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L845" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1124. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L845" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1125. </dd>
  1126. </div>
  1127. </div>
  1128. <div id="parseJsonFragments-iterators-all">
  1129. <div id="parseJsonFragments.i,Stream,string">
  1130. <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>
  1131. <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> {.
  1132. <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>
  1133. <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>
  1134. <dd>
  1135. 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>.
  1136. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L932" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1137. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L932" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1138. </dd>
  1139. </div>
  1140. </div>
  1141. </dl>
  1142. </div>
  1143. <div class="section" id="17">
  1144. <h1><a class="toc-backref" href="#17">Macros</a></h1>
  1145. <dl class="item">
  1146. <div id="%*-macros-all">
  1147. <div id="%*.m,untyped">
  1148. <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>
  1149. <dd>
  1150. 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.
  1151. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L442" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1152. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L442" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1153. </dd>
  1154. </div>
  1155. </div>
  1156. <div id="isRefSkipDistinct-macros-all">
  1157. <div id="isRefSkipDistinct.m,typed">
  1158. <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>
  1159. <dd>
  1160. internal only, do not use
  1161. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L1074" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1162. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L1074" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1163. </dd>
  1164. </div>
  1165. </div>
  1166. </dl>
  1167. </div>
  1168. <div class="section" id="18">
  1169. <h1><a class="toc-backref" href="#18">Templates</a></h1>
  1170. <dl class="item">
  1171. <div id="%-templates-all">
  1172. <div id="%.t,JsonNode">
  1173. <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>
  1174. <dd>
  1175. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/json.nim#L364" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1176. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/json.nim#L364" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1177. </dd>
  1178. </div>
  1179. </div>
  1180. </dl>
  1181. </div>
  1182. <div class="section" id="19">
  1183. <h1><a class="toc-backref" href="#19">Exports</a></h1>
  1184. <dl class="item">
  1185. <a href="tables.html#$,Table[A,B]"><span class="Identifier">$</span></a>, <a href="tables.html#$,TableRef[A,B]"><span class="Identifier">$</span></a>, <a href="tables.html#$,OrderedTable[A,B]"><span class="Identifier">$</span></a>, <a href="tables.html#$,OrderedTableRef[A,B]"><span class="Identifier">$</span></a>, <a href="tables.html#$,CountTable[A]"><span class="Identifier">$</span></a>, <a href="tables.html#$,CountTableRef[A]"><span class="Identifier">$</span></a>, <a href="parsejson.html#JsonEventKind"><span class="Identifier">JsonEventKind</span></a>, <a href="parsejson.html#JsonError"><span class="Identifier">JsonError</span></a>, <a href="parsejson.html#JsonParser"><span class="Identifier">JsonParser</span></a>, <a href="parsejson.html#JsonKindError"><span class="Identifier">JsonKindError</span></a>, <a href="lexbase.html#open,BaseLexer,Stream,int,set[char]"><span class="Identifier">open</span></a>, <a href="parsejson.html#open,JsonParser,Stream,string"><span class="Identifier">open</span></a>, <a href="syncio.html#open,File,string,FileMode,int"><span class="Identifier">open</span></a>, <a href="syncio.html#open,File,FileHandle,FileMode"><span class="Identifier">open</span></a>, <a href="syncio.html#open,string,FileMode,int"><span class="Identifier">open</span></a>, <a href="lexbase.html#close,BaseLexer"><span class="Identifier">close</span></a>, <a href="streams.html#close,Stream"><span class="Identifier">close</span></a>, <a href="parsejson.html#close,JsonParser"><span class="Identifier">close</span></a>, <a href="syncio.html#close,File"><span class="Identifier">close</span></a>, <a href="parsejson.html#str,JsonParser"><span class="Identifier">str</span></a>, <a href="parsejson.html#getInt,JsonParser"><span class="Identifier">getInt</span></a>, <a href="parsejson.html#getFloat,JsonParser"><span class="Identifier">getFloat</span></a>, <a href="macros.html#kind,NimNode"><span class="Identifier">kind</span></a>, <a href="parsejson.html#kind,JsonParser"><span class="Identifier">kind</span></a>, <a href="parsejson.html#getColumn,JsonParser"><span class="Identifier">getColumn</span></a>, <a href="parsejson.html#getLine,JsonParser"><span class="Identifier">getLine</span></a>, <a href="parsejson.html#getFilename,JsonParser"><span class="Identifier">getFilename</span></a>, <a href="parsejson.html#errorMsg,JsonParser"><span class="Identifier">errorMsg</span></a>, <a href="parsejson.html#errorMsgExpected,JsonParser,string"><span class="Identifier">errorMsgExpected</span></a>, <a href="parsejson.html#next,JsonParser"><span class="Identifier">next</span></a>, <a href="parsejson.html#JsonParsingError"><span class="Identifier">JsonParsingError</span></a>, <a href="parsejson.html#raiseParseErr,JsonParser,string"><span class="Identifier">raiseParseErr</span></a>, <a href="strutils.html#nimIdentNormalize,string"><span class="Identifier">nimIdentNormalize</span></a>
  1186. </dl>
  1187. </div>
  1188. </div>
  1189. </div>
  1190. <div class="twelve-columns footer">
  1191. <span class="nim-sprite"></span>
  1192. <br>
  1193. <small style="color: var(--hint);">Made with Nim. Generated: 2025-04-22 15:32:28 UTC</small>
  1194. </div>
  1195. </div>
  1196. </div>
  1197. <script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
  1198. </body>
  1199. </html>