[DOCS] parse_json: Objects do not keep key order

Document JSON not guaranteeing key order.
This commit is contained in:
Max Hilbrunner 2018-02-02 05:32:12 +01:00 committed by mhilbrunner
parent abf82057f3
commit 82b8f1729d
3 changed files with 4 additions and 2 deletions

View file

@ -608,6 +608,7 @@
<description> <description>
Parse JSON text to a Variant (use [method typeof] to check if it is what you expect). Parse JSON text to a Variant (use [method typeof] to check if it is what you expect).
Be aware that the JSON specification does not define integer or float types, but only a number type. Therefore, parsing a JSON text will convert all numerical values to [float] types. Be aware that the JSON specification does not define integer or float types, but only a number type. Therefore, parsing a JSON text will convert all numerical values to [float] types.
Note that JSON objects do not preserve key order like Godot dictionaries, thus you should not rely on keys being in a certain order if a dictionary is constructed from JSON. In contrast, JSON arrays retain the order of their elements:
[codeblock] [codeblock]
p = parse_json('["a", "b", "c"]') p = parse_json('["a", "b", "c"]')
if typeof(p) == TYPE_ARRAY: if typeof(p) == TYPE_ARRAY:

View file

@ -4,7 +4,7 @@
Helper class for parsing JSON data. Helper class for parsing JSON data.
</brief_description> </brief_description>
<description> <description>
Helper class for parsing JSON data. For usage example, see [JSONParseResult]. Helper class for parsing JSON data. For usage example and other important hints, see [JSONParseResult].
</description> </description>
<tutorials> <tutorials>
</tutorials> </tutorials>

View file

@ -24,7 +24,8 @@
</member> </member>
<member name="result" type="Variant" setter="set_result" getter="get_result"> <member name="result" type="Variant" setter="set_result" getter="get_result">
A [Variant] containing the parsed JSON. Use typeof() to check if it is what you expect. For example, if JSON source starts with curly braces ([code]{}[/code]) a [Dictionary] will be returned, if JSON source starts with braces ([code][][/code]) an [Array] will be returned. A [Variant] containing the parsed JSON. Use typeof() to check if it is what you expect. For example, if JSON source starts with curly braces ([code]{}[/code]) a [Dictionary] will be returned, if JSON source starts with braces ([code][][/code]) an [Array] will be returned.
[i]Be aware that the JSON specification does not define integer or float types, but only a number type. Therefore, parsing a JSON text will convert all numerical values to float types.[/i] [i]Be aware that the JSON specification does not define integer or float types, but only a number type. Therefore, parsing a JSON text will convert all numerical values to float types.
Note that JSON objects do not preserve key order like Godot dictionaries, thus you should not rely on keys being in a certain order if a dictionary is constructed from JSON. In contrast, JSON arrays retain the order of their elements:[/i]
[codeblock] [codeblock]
p = JSON.parse('["hello", "world", "!"]') p = JSON.parse('["hello", "world", "!"]')
if typeof(p) == TYPE_ARRAY: if typeof(p) == TYPE_ARRAY: