JSON: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added syntax colouring, marked p2js compatible) |
|||
Line 3,298: | Line 3,298: | ||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
The distribution now contains a simple json module |
The distribution now contains a simple json module |
||
<lang Phix>-- |
<!--<lang Phix>(phixonline)--> |
||
-- demo\rosetta\JSON.exw |
<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;">`"hello"`</span><span style="color: #0000FF;">,</span> |
||
<span style="color: #008000;">`null`</span><span style="color: #0000FF;">,</span> |
|||
` |
<span style="color: #008000;">`[12]`</span><span style="color: #0000FF;">,</span> |
||
`[12]`, |
<span style="color: #008000;">`[null,12]`</span><span style="color: #0000FF;">,</span> |
||
`[ |
<span style="color: #008000;">`[]`</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="color: #0000FF;">,</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 |
|||
<!--</lang>--> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |