JSON: Difference between revisions

4,062 bytes added ,  2 years ago
m
→‎{{header|Phix}}: added syntax colouring, marked p2js compatible
m (→‎{{header|Phix}}: added syntax colouring, marked p2js compatible)
Line 3,298:
=={{header|Phix}}==
The distribution now contains a simple json module
<!--<lang Phix>(phixonline)-->
<span style="color: #000080;font-style:italic;">-- demo\rosetta\JSON.exw</span>
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
-- =====================
<span style="color: #008080;">include</span> <span style="color: #000000;">builtins</span><span style="color: #0000FF;">/</span><span style="color: #000000;">json</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
--
include builtins/json.e
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"roundtrip (10 examples):\n"</span><span style="color: #0000FF;">)</span>
 
<span style="color: #004080;">sequence</span> <span style="color: #000000;">json_strings</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #008000;">`{"this":"that","age":{"this":"that","age":29}}`</span><span style="color: #0000FF;">,</span>
puts(1,"roundtrip (10 examples):\n")
<span style="color: #008000;">`1`</span><span style="color: #0000FF;">,</span>
sequence json_strings = {`{"this":"that","age":{"this":"that","age":29}}`,
<span style="color: #008000;">`1"hello"`</span><span style="color: #0000FF;">,</span>
` <span style="hellocolor: #008000;">`null`</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">`null[12]`</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">`[null,12]`</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">`[null,12]`</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">`[]{"this":"that","age":29}`</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">`{}`</span><span style="this"color: #0000FF;"that","age":29}`>,</span>
<span style="color: #008000;">`{}`[null,[null,12]]`</span><span style="color: #0000FF;">}</span>
`[null,[null,12]]`}
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">json_strings</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
 
<span style="color: #004080;">string</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">json_strings</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span>
for i=1 to length(json_strings) do
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">s</span><span style="color: #0000FF;">&</span><span style="color: #008000;">"\n"</span><span style="color: #0000FF;">)</span>
string s = json_strings[i]
<span style="color: #004080;">object</span> <span style="color: #000000;">json_object</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">parse_json</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
puts(1,s&"\n")
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">print_json</span><span style="color: #0000FF;">(</span><span style="color: #008000;">""</span><span style="color: #0000FF;">,</span><span style="color: #000000;">json_object</span><span style="color: #0000FF;">,</span><span style="color: #004600;">true</span><span style="color: #0000FF;">)&</span><span style="color: #008000;">"\n"</span><span style="color: #0000FF;">)</span>
object json_object = parse_json(s)
<span style="color: #008080;">if</span> <span style="color: #008080;">not</span> <span style="color: #7060A8;">equal</span><span style="color: #0000FF;">(</span><span style="color: #000000;">print_json</span><span style="color: #0000FF;">(</span><span style="color: #008000;">""</span><span style="color: #0000FF;">,</span><span style="color: #000000;">json_object</span><span style="color: #0000FF;">,</span><span style="color: #004600;">true</span><span style="color: #0000FF;">),</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span> <span style="color: #0000FF;">?</span><span style="color: #000000;">9</span><span style="color: #0000FF;">/</span><span style="color: #000000;">0</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
puts(1,print_json("",json_object,true)&"\n")
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
if not equal(print_json("",json_object,true),s) then ?9/0 end if
end for<!--</lang>-->
{{out}}
<pre>
7,820

edits