-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathdjson_type.go
More file actions
115 lines (91 loc) · 1.97 KB
/
djson_type.go
File metadata and controls
115 lines (91 loc) · 1.97 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
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
107
108
109
110
111
112
113
114
115
package djson
func (m *JSON) getTypeSimple(key interface{}) string {
switch m._Type {
case OBJECT:
if key, tok := key.(string); tok {
if typeStr, ok := m._Object.Type(key); ok {
return typeStr
}
}
case ARRAY:
if idx, tok := key.(int); tok {
if typeStr, ok := m._Array.Type(idx); ok {
return typeStr
}
}
}
return ""
}
func (m *JSON) isSameType(key interface{}, inTypeStr string) bool {
return m.getTypeSimple(key) == inTypeStr
}
func (m *JSON) IsBool(key ...interface{}) bool {
if IsEmptyArg(key) {
return m._Type == BOOL
}
return m.isSameType(key[0], "bool")
}
func (m *JSON) IsInt(key ...interface{}) bool {
if IsEmptyArg(key) {
return m._Type == INT
}
return m.isSameType(key[0], "int")
}
func (m *JSON) IsNumeric(key ...interface{}) bool {
if IsEmptyArg(key) {
return m._Type == FLOAT || m._Type == INT
}
return m.isSameType(key[0], "int") || m.isSameType(key[0], "float")
}
func (m *JSON) IsFloat(key ...interface{}) bool {
if IsEmptyArg(key) {
return m._Type == FLOAT
}
return m.isSameType(key[0], "float")
}
func (m *JSON) IsString(key ...interface{}) bool {
if IsEmptyArg(key) {
return m._Type == STRING
}
return m.isSameType(key[0], "string")
}
func (m *JSON) IsNull(key ...interface{}) bool {
if IsEmptyArg(key) {
return m._Type == NULL
}
return m.isSameType(key[0], "null")
}
func (m *JSON) IsObject(key ...interface{}) bool {
if IsEmptyArg(key) {
return m._Type == OBJECT
}
return m.isSameType(key[0], "object")
}
func (m *JSON) IsArray(key ...interface{}) bool {
if IsEmptyArg(key) {
return m._Type == ARRAY
}
return m.isSameType(key[0], "array")
}
func (m *JSON) Type(key ...interface{}) string {
if IsEmptyArg(key) {
switch m._Type {
case NULL:
return "null"
case OBJECT:
return "object"
case ARRAY:
return "array"
case STRING:
return "string"
case INT:
return "int"
case FLOAT:
return "float"
case BOOL:
return "bool"
}
return ""
}
return m.getTypeSimple(key[0])
}