summaryrefslogtreecommitdiff
path: root/doc/classes/JSON.xml
blob: b95aaed143c8d71d0ada3c94d9df5b557482595a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?xml version="1.0" encoding="UTF-8" ?>
<class name="JSON" inherits="RefCounted" version="4.0">
	<brief_description>
		Helper class for creating and parsing JSON data.
	</brief_description>
	<description>
		The [JSON] enables all data types to be converted to and from a JSON string. This useful for serializing data to save to a file or send over the network.
		[method stringify] is used to convert any data type into a JSON string.
		[method parse] is used to convert any existing JSON data into a [Variant] that can be used within Godot. If successfully parsed, use [method get_data] to retrieve the [Variant], and use [code]typeof[/code] to check if the Variant's type is what you expect. JSON Objects are converted into a [Dictionary], but JSON data can be used to store [Array]s, numbers, [String]s and even just a boolean.
		[b]Example[/b]
		[codeblock]
		var data_to_send = ["a", "b", "c"]
		var json = JSON.new()
		var json_string = json.stringify(data_to_send)
		# Save data
		# ...
		# Retrieve data
		var error = json.parse(json_string)
		if error == OK:
		    var data_received = json.get_data()
		    if typeof(data_received) == TYPE_ARRAY:
		        print(data_received) # Prints array
		    else:
		        print("Unexpected data")
		else:
		    print("JSON Parse Error: ", json.get_error_message(), " in ", json_string, " at line ", json.get_error_line())
		[/codeblock]
	</description>
	<tutorials>
	</tutorials>
	<methods>
		<method name="get_data" qualifiers="const">
			<return type="Variant">
			</return>
			<description>
				Returns the [Variant] containing the data of a successful [method parse].
				[b]Note:[/b] It will return [code]Null[/code] if the last call to parse was unsuccessful or [method parse] has not yet been called.
			</description>
		</method>
		<method name="get_error_line" qualifiers="const">
			<return type="int">
			</return>
			<description>
				Returns [code]0[/code] if the last call to [method parse] was successful, or the line number where the parse failed.
			</description>
		</method>
		<method name="get_error_message" qualifiers="const">
			<return type="String">
			</return>
			<description>
				Returns an empty string if the last call to [method parse] was successful, or the error message if it failed.
			</description>
		</method>
		<method name="parse">
			<return type="int" enum="Error">
			</return>
			<argument index="0" name="json_string" type="String">
			</argument>
			<description>
				Attempts to parse the [code]json_string[/code] provided.
				Returns an [enum Error]. If the parse was successful, it returns [code]OK[/code] and the result can be retrieved using [method get_data]. If unsuccessful, use [method get_error_line] and [method get_error_message] for identifying the source of the failure.
			</description>
		</method>
		<method name="stringify">
			<return type="String">
			</return>
			<argument index="0" name="data" type="Variant">
			</argument>
			<argument index="1" name="indent" type="String" default="&quot;&quot;">
			</argument>
			<argument index="2" name="sort_keys" type="bool" default="true">
			</argument>
			<argument index="3" name="full_precision" type="bool" default="false">
			</argument>
			<description>
				Converts a [Variant] var to JSON text and returns the result. Useful for serializing data to store or send over the network.
				[b]Note:[/b] The JSON specification does not define integer or float types, but only a [i]number[/i] type. Therefore, converting a Variant to JSON text will convert all numerical values to [float] types.
				[b]Note:[/b] If [code]full_precision[/code] is true, when stringifying floats, the unreliable digits are stringified in addition to the reliable digits to guarantee exact decoding.
				Use [code]indent[/code] parameter to pretty stringify the output.
				[b]Example output:[/b]
				[codeblock]
				## JSON.stringify(my_dictionary)
				{"name":"my_dictionary","version":"1.0.0","entities":[{"name":"entity_0","value":"value_0"},{"name":"entity_1","value":"value_1"}]}

				## JSON.stringify(my_dictionary, "\t")
				{
				        "name": "my_dictionary",
				        "version": "1.0.0",
				        "entities": [
				                {
				                        "name": "entity_0",
				                        "value": "value_0"
				                },
				                {
				                        "name": "entity_1",
				                        "value": "value_1"
				                }
				        ]
				}
				[/codeblock]
			</description>
		</method>
	</methods>
	<constants>
	</constants>
</class>