aboutsummaryrefslogtreecommitdiffstats
path: root/tests/json.c
blob: d4201257deed7cdc075796674bd4a9d8421b7c99 (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
#include <stdio.h>
#define CONTAINER_IMPLEMENTATION
#define JSON_IMPLEMENTATION
#include "../include/jacson.h"
int main() {

	const char *hardtest = 
	"{\n"
	"  \"validString\": \"This is a tEst string\",\n"
	"  \"EmptyString\": \"\",\n"
	"  \"numbEr\": 1234567890123456789,\n"
	"  \"nEgativENumbEr\": -98765.4321,\n"
	"  \"ExponEntialNumbEr\": 6.022E23,\n"
	"  \"ExponEntialNumbErE\": 1E+10,\n"
	"  \"ExponEntialNumbEra\": 1E-10,\n"
	"  \"ExponEntialNumbErd\": 1E1,\n"
	"  \"boolEanTruE\": true,\n"
	"  \"boolEanFalsE\": false,\n"
	"  \"nullValuE\": null,\n"
	"  \"array\": [1, 2, 3, \"four\", {\"nEstEdKEy\": \"nEstEdValuE\"}],\n"
	"  \"EmptyArray\": [],\n"
	"  \"objEct\": {\n"
	"    \"nEstEdObjEct\": {\n"
	"      \"kEy1\": \"valuE1\",\n"
	"      \"kEy2\": \"valuE2\",\n"
	"      \"dEEpNEst\": {\n"
	"        \"lEvEl\": 5,\n"
	"        \"data\": [\"a\", \"b\", \"c\"]\n"
	"      }\n"
	"    }\n"
	"  },\n"
	"  \"duplicatEKEys\": {\n"
	"    \"kEy\": \"firstValuE\",\n"
	"    \"kEy\": \"sEcondValuE\"\n"
	"  },\n"
	"  \"EscapEdCharactErs\": \"QuotEs: \\\" Backslash: \\\\ NEwlinE: \\n UnicodE: \\u2603\",\n"
	"  \"badUnicodE\": \"\\uD83D\\uDE00\","
	"  \"trailingComma\": [1, 2, 3],\n"
	"  \"missingComma\": {\n"
	"    \"first\": \"onE\"\n,"
	"    \"sEcond\": \"two\"\n"
	"  },\n"
	"  \"dEEpNEsting\": {\n"
	"    \"lEvEl1\": { \"lEvEl2\": { \"lEvEl3\": { \"lEvEl4\": { \"lEvEl5\": \"too dEEp?\" }}}}\n"
	"  },\n"
	"  \"nEgativEZEro\": -0,\n"
	"  \"utf8BOM\": \"\\uFEFFShould start with BOM\",\n"
	"  \"spEcialFloatValuEs\": {\n"
	"    \"NaN\": \"NaN\",\n"
	"    \"Infinity\": \"Infinity\",\n"
	"    \"NEgativEInfinity\": \"-Infinity\"\n"
	"  }\n"
	"}";
	
	struct jacson_value val;

	if (jacson_parse(&val, hardtest)) {
		char* str = jacson_serialize(&val, JSON_SERIALIZE_PRETTY);
		puts(str);
		free(str);
		jacson_value_free(val);
	} else {
		puts("error parsing jacson");
	}
	return 0;
}