<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="en">Infra Standard</cite>, <time>2021-03-23T13:32:29.000Z</time>, <time>2021-04-12T05:55:18.503Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://infra.spec.whatwg.org/">https://infra.spec.whatwg.org/</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <cite xml:lang="en">Infra Standard</cite>, <time>2021-03-23T13:32:29.000Z</time>, <time>2021-04-12T05:56:49.624Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://infra.spec.whatwg.org/#convert-a-json-derived-javascript-value-to-an-infra-value">https://infra.spec.whatwg.org/#convert-a-json-derived-javascript-value-to-an-infra-value</anchor-external></li></ul></li></ul></refs></section><section><h1>データ型</h1><figure class="short list"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite>Infra Standard</cite> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ型</anchor></figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リスト</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スタック</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">キュー</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">集合</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">写像</anchor></li></ul></figure></section><section><h1>型変換</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON派生JavaScript値をInfra値に変換<rt xmlns="http://www.w3.org/1999/xhtml">convert a JSON-derived JavaScript value to an Infra value</rt></rubyb></dfn>するには、
<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript値</anchor></var>を、
次のようにします。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal></src></p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Type</anchor> (<var>JavaScript値</var>) が <code>Null</code>,
<code>Boolean</code>,
<code>String</code>,
<code>Number</code>
の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 
<var>JavaScript値</var>を返します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> 
それ以外で、
<code>IsArray</code> (<var>JavaScript値</var>)
が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor>の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 
<var>結果</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リスト</anchor>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 
<var>長さ</var>を、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">!</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToLength</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">!</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Get</anchor> (<var>JavaScript値</var>, <code>length</code>))
の結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">範囲</anchor> [ <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n>, <var>長さ</var> - 1 ] の各<var>索引</var>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ついて、順に<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">for each</title></anchor>、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 
<var>索引名</var>を、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">!</anchor> <code>ToString</code> (<var>索引</var>)
に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
<var>索引のJavaScript値</var> を、
<code>!</code> <code>Get</code> (<var>JavaScript値</var>, <var>索引名</var>)
に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 
<var>索引の基盤値</var>を、
<var>索引のJavaScript値</var>を
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON派生JavaScript値をInfra値に変換</anchor>した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 
<var>索引の基盤値</var>を、
<var>結果</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">末尾に追加</anchor>します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 
<var>結果</var>を返します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> 
それ以外の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 
<var>結果</var>を、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">順序付き写像</anchor>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> 
<code>!</code> <var>JavaScript値</var>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" class="ss">OwnPropertyKeys</f> () の各<var>鍵</var>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ついて、順に<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">for each</title></anchor>、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> 
<var>鍵のJavaScript値</var>を、
<code>!</code> <code>Get</code> (<var>JavaScript値</var>, <var>鍵</var>)
に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> 
<var>鍵の基盤値</var>を、
<var>鍵のJavaScript値</var>を
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSON派生JavaScript値をInfra値に変換</anchor>した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> 
<var>結果</var> [ <var>鍵</var> ] を、
<var>鍵の基盤値</var>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">設定</anchor>します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> 
<var>結果</var>を返します。</li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JSONをInfra値に構文解析</anchor>する処理から呼び出されます。</p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <cite xml:lang="en">Add &quot;parse JSON into Infra values&quot;</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">domenic</anchor>, <time>2019-05-11 00:47:58 +09:00</time>, <time>2021-04-12T06:07:16.000Z</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/infra/commit/9bf763869b84aac00c8a1883ddb70485835ae861">https://github.com/whatwg/infra/commit/9bf763869b84aac00c8a1883ddb70485835ae861</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <cite xml:lang="en">Add &quot;parse JSON into maps and lists&quot; by domenic · Pull Request #249 · whatwg/infra</cite>
(<time>2021-04-12T06:08:04.000Z</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/infra/pull/249">https://github.com/whatwg/infra/pull/249</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <cite xml:lang="en">Add Boolean to JSON-to-Infra conversion steps</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NotWoods</anchor>, <time>2019-10-10 02:18:39 +09:00</time>, <time>2021-04-12T06:47:38.000Z</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/infra/commit/fbe57e3bcc2730d8ecb96ef667a739aec92f91d4">https://github.com/whatwg/infra/commit/fbe57e3bcc2730d8ecb96ef667a739aec92f91d4</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <cite xml:lang="en">Boolean not listed in infra conversion steps · Issue #273 · whatwg/infra</cite>
(<time>2021-04-12T06:48:58.000Z</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/infra/issues/273">https://github.com/whatwg/infra/issues/273</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <cite xml:lang="en">Add Boolean to conversion steps by NotWoods · Pull Request #275 · whatwg/infra</cite>
(<time>2021-04-12T06:49:18.000Z</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/infra/pull/275">https://github.com/whatwg/infra/pull/275</anchor-external></p></section></body></html>