forked from Krowemoh/TCL-Utilities
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJSON.CREATE.OBJECT
More file actions
69 lines (69 loc) · 1.4 KB
/
JSON.CREATE.OBJECT
File metadata and controls
69 lines (69 loc) · 1.4 KB
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
SUBROUTINE JSON.CREATE.OBJECT(BUFFER)
*
GIT.FILENAME = 'JSON.CREATE.OBJECT'
GIT.REPO = 'https://github.com/Krowemoh/TCL-Utilities.git'
*
* VERSION
*
VERSION = '1'
*
@USER1 = 'JSON.CREATE.OBJECT'
@USER2 = 'JSON.CREATE.OBJECT'
*
NUMBER.OF.KEYS = DCOUNT(BUFFER,@AM)
*
KEYS = ''
JSON = ''
*
FOR I = 1 TO NUMBER.OF.KEYS
KEY = TRIM(BUFFER<I,1>)
VALUE = TRIM(BUFFER<I,2>)
*
LOCATE(KEY,KEYS;KEY.POS) ELSE
KEYS<-1> = KEY
KEY.POS = -1
END
*
IF VALUE = '' THEN
GOSUB QUOTE.VALUE
JSON<KEY.POS> = KEY.VALUE
*
END ELSE IF VALUE[1,1] = '0' THEN
GOSUB QUOTE.VALUE
JSON<KEY.POS> = KEY.VALUE
*
END ELSE IF VALUE[1,1] = '.' THEN
GOSUB QUOTE.VALUE
JSON<KEY.POS> = KEY.VALUE
*
END ELSE IF (VALUE[1,1] = '[' OR VALUE[1,1] = '{' OR NUM(VALUE)) THEN
JSON<KEY.POS> = '"' : KEY : '": ' : VALUE
*
END ELSE
GOSUB QUOTE.VALUE
JSON<KEY.POS> = KEY.VALUE
END
NEXT I
*
CONVERT @AM TO ',' IN JSON
*
JSON = '{ ' : JSON : ' }'
*
BUFFER = JSON
*
RETURN
*
********************* S U B R O U T I N E *********************
*
QUOTE.VALUE:NULL
*
KEY = CHANGE(KEY,'"','\"')
VALUE = CHANGE(VALUE,'"','\"')
KEY.VALUE = '"' : KEY : '": "' : VALUE : '"'
*
RETURN
*
* END OF PROGRAM
*
END
*