Forums / Cotonti / Development / Help request :: JSON

JSON notation

Sergey
#24011 2010-04-08 12:47
It is my test JSON method
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title></title>
</head>

<body>

<?php

//$json = '{"a":"hellow","b":2,"c":3,"d":{"d":10,"1":20},"e":"при\"вет"}';
$a = array('<aaa>',"'bar'",'"baz"','&blong&',"при\"вет");

echo "исходный: array('<aaa>',\"'bar'\",'\"baz\"','&blong&',\"при\\\"вет\"):", print_r($a), "<br />";
echo "Normal: ", json_encode($a), "<br />";
echo "Tags: ",   json_encode($a,JSON_HEX_TAG), "<br />";
echo "Apos: ",   json_encode($a,JSON_HEX_APOS), "<br />";
echo "Quot: ",   json_encode($a,JSON_HEX_QUOT), "<br />";
echo "Amp: ",    json_encode($a,JSON_HEX_AMP), "<br />";
echo "All: ",    json_encode($a,JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP), "<br /><br />";


//echo "Zend json: ",    Zend_Json::encode($a), "<br /><br />";

$b = array();
echo "исходный: array():", print_r($b), "<br />";
echo "Empty array output as array: ", json_encode($b), "<br />";
echo "Empty array output as object: ", json_encode($b, JSON_FORCE_OBJECT), "<br /><br />";

$c = array(array(1,2,3));
echo "исходный: array(array(1,2,3):", print_r($c), "<br />";
echo "Non-associative array output as array: ", json_encode($c), "\n";
echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT), "<br /><br />";
/*

исходный: array('',"'bar'",'"baz"','&blong&',"при\"вет"):Array ( [0] => [1] => 'bar' [2] => "baz" [3] => &blong& [4] => при"вет ) 1
Normal: ["","'bar'","\"baz\"","&blong&","\u043f\u0440\u0438\"\u0432\u0435\u0442"]
Tags: ["\u003Caaa\u003E","'bar'","\"baz\"","&blong&","\u043f\u0440\u0438\"\u0432\u0435\u0442"]
Apos: ["","\u0027bar\u0027","\"baz\"","&blong&","\u043f\u0440\u0438\"\u0432\u0435\u0442"]
Quot: ["","'bar'","\u0022baz\u0022","&blong&","\u043f\u0440\u0438\u0022\u0432\u0435\u0442"]
Amp: ["","'bar'","\"baz\"","\u0026blong\u0026","\u043f\u0440\u0438\"\u0432\u0435\u0442"]
All: ["\u003Caaa\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","\u043f\u0440\u0438\u0022\u0432\u0435\u0442"]

исходный: array():Array ( ) 1
Empty array output as array: []
Empty array output as object: {}

исходный: array(array(1,2,3):Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) ) 1
Non-associative array output as array: [[1,2,3]] Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}}

броузер FF
исходный: array('<aaa>',"'bar'",'"baz"','&blong&',"при\"вет"):Array
(
    [0] => <aaa>
    [1] => 'bar'
    [2] => "baz"
    [3] => &blong&
    [4] => при"вет
)
1<br />Normal: ["<aaa>","'bar'","\"baz\"","&blong&","\u043f\u0440\u0438\"\u0432\u0435\u0442"]<br />
Tags: ["\u003Caaa\u003E","'bar'","\"baz\"","&blong&","\u043f\u0440\u0438\"\u0432\u0435\u0442"]<br />
Apos: ["<aaa>","\u0027bar\u0027","\"baz\"","&blong&","\u043f\u0440\u0438\"\u0432\u0435\u0442"]<br />
Quot: ["<aaa>","'bar'","\u0022baz\u0022","&blong&","\u043f\u0440\u0438\u0022\u0432\u0435\u0442"]<br />
Amp: ["<aaa>","'bar'","\"baz\"","\u0026blong\u0026","\u043f\u0440\u0438\"\u0432\u0435\u0442"]<br />
All: ["\u003Caaa\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","\u043f\u0440\u0438\u0022\u0432\u0435\u0442"]<br /><br />

исходный: array():Array
(
)
1<br />Empty array output as array: []<br />Empty array output as object: {}<br /><br />исходный: array(array(1,2,3):Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

)
1<br />Non-associative array output as array: [[1,2,3]]
Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}}<br /><br />



*/

?>

</body>

</html>

Добавлено 5 дней спустя:

The national coding function generates json_encode 6 characters on 1 national symbol (see post above)
that is:["<aaa>","'bar'","\"baz\"","&blong&","\u043f\u0440\u0438\"\u0432\u0435\u0442"]
for: $a = array('<aaa>',"'bar'",'"baz"','&blong&',"при\"вет");
This function utf8_jsondecode eliminates this problem
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title></title>
</head>

<body>

<?php

$a = array('<aaa>',"'bar'",'"baz"','&blong&',"при\"вет");

echo "исходный: array('\<aaa\>',\"'bar'\",'\"baz\"','&blong&',\"при\\\"вет\"):", print_r($a), "<br />";
echo "Normal: ", $str=json_encode($a), "<br />";

function utf8_jsondecode($str) {
    $str = preg_replace("/\\\u([0-9a-f]{1,4})/i","&#x\\1;",urldecode($str));
    return html_entity_decode($str,null,'UTF-8');;
  }

echo "unicode_decode: ", utf8_jsondecode($str), "<br />";

/*

броузер FF

исходный: array('\<aaa\>',"'bar'",'"baz"','&blong&',"при\"вет"):
Array
(
    [0] => <aaa>
    [1] => 'bar'
    [2] => "baz"
    [3] => &blong&
    [4] => при"вет
)
1

Normal: ["<aaa>","'bar'","\"baz\"","&blong&","\u043f\u0440\u0438\"\u0432\u0435\u0442"]
unicode_decode: ["<aaa>","'bar'","\"baz\"","&blong&","при\"вет"]
*/

?>
</body>

</html>
www.cotonti.mobi
This post was edited by Sergey (2010-04-13 23:12, 14 years ago)