-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJSONEncoder.inc.php
executable file
·76 lines (70 loc) · 1.92 KB
/
JSONEncoder.inc.php
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
<?php
class JSONEncoder {
/** @var $additionalAttributes array Set of additional attributes for special cases*/
var $additionalAttributes;
/**
* Set the additionalAttributes array
* @param $additionalAttributes array
*/
function setAdditionalAttributes($additionalAttributes) {
$this->additionalAttributes = $additionalAttributes;
}
/**
* Construct a JSON string to use for AJAX communication
* @return string
*/
function getString() {
$jsonString = "{\"status\": \"\"";
if(isset($this->additionalAttributes)) {
foreach($this->additionalAttributes as $key => $value) {
$jsonString .= ", \"$key\": " . $this->_json_encode($value);
}
}
$jsonString .= "}";
return $jsonString;
}
/**
* encode a string for use with JSON
* Thanks to: http://usphp.com/manual/en/function.json-encode.php#82904
*/
function _json_encode($a = false) {
if (function_exists('json_encode')) {
return json_encode($a);
} else {
if (is_null($a)) return 'null';
if ($a === false) return 'false';
if ($a === true) return 'true';
if (is_scalar($a)){
if (is_float($a)) {
// Always use "." for floats.
return floatval(str_replace(",", ".", strval($a)));
}
if (is_string($a)) {
static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\
f', '\"'));
return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
}
else {
return $a;
}
}
$isList = true;
for ($i = 0, reset($a); $i < count($a); $i++, next($a)) {
if (key($a) !== $i) {
$isList = false;
break;
}
}
$result = array();
if ($isList) {
foreach ($a as $v) $result[] = $this->_json_encode($v);
return '[' . join(',', $result) . ']';
}
else {
foreach ($a as $k => $v) $result[] = $this->_json_encode($k).':'.$this->_json_encode($v);
return '{' . join(',', $result) . '}';
}
}
}
}
?>