1--TEST-- 2JSON (http://www.crockford.com/JSON/JSON_checker/test/pass1.json) 3--INI-- 4serialize_precision=-1 5--FILE-- 6<?php 7 8$test = " 9[ 10 \"JSON Test Pattern pass1\", 11 {\"object with 1 member\":[\"array with 1 element\"]}, 12 {}, 13 [], 14 -42, 15 true, 16 false, 17 null, 18 { 19 \"integer\": 1234567890, 20 \"real\": -9876.543210, 21 \"e\": 0.123456789e-12, 22 \"E\": 1.234567890E+34, 23 \"\": 23456789012E666, 24 \"zero\": 0, 25 \"one\": 1, 26 \"space\": \" \", 27 \"quote\": \"\\\"\", 28 \"backslash\": \"\\\\\", 29 \"controls\": \"\\b\\f\\n\\r\\t\", 30 \"slash\": \"/ & \\/\", 31 \"alpha\": \"abcdefghijklmnopqrstuvwyz\", 32 \"ALPHA\": \"ABCDEFGHIJKLMNOPQRSTUVWYZ\", 33 \"digit\": \"0123456789\", 34 \"special\": \"`1~!@#$%^&*()_+-={':[,]}|;.</>?\", 35 \"hex\": \"\\u0123\\u4567\\u89AB\\uCDEF\\uabcd\\uef4A\", 36 \"true\": true, 37 \"false\": false, 38 \"null\": null, 39 \"array\":[ ], 40 \"object\":{ }, 41 \"address\": \"50 St. James Street\", 42 \"url\": \"http://www.JSON.org/\", 43 \"comment\": \"// /* <!-- --\", 44 \"# -- --> */\": \" \", 45 \" s p a c e d \" :[1,2 , 3 46 47, 48 494 , 5 , 6 ,7 ], 50 \"compact\": [1,2,3,4,5,6,7], 51 \"jsontext\": \"{\\\"object with 1 member\\\":[\\\"array with 1 element\\\"]}\", 52 \"quotes\": \"" \\u0022 %22 0x22 034 "\", 53 \"\\/\\\\\\\"\\uCAFE\\uBABE\\uAB98\\uFCDE\\ubcda\\uef4A\\b\\f\\n\\r\\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?\" 54: \"A key can be any string\" 55 }, 56 0.5 ,98.6 57, 5899.44 59, 60 611066 62 63 64,\"rosebud\"] 65"; 66 67echo 'Testing:' . $test . "\n"; 68echo "DECODE: AS OBJECT\n"; 69$obj = json_decode($test); 70var_dump($obj); 71echo "DECODE: AS ARRAY\n"; 72$arr = json_decode($test, true); 73var_dump($arr); 74 75echo "ENCODE: FROM OBJECT\n"; 76$obj_enc = json_encode($obj, JSON_PARTIAL_OUTPUT_ON_ERROR); 77echo $obj_enc . "\n"; 78echo "ENCODE: FROM ARRAY\n"; 79$arr_enc = json_encode($arr, JSON_PARTIAL_OUTPUT_ON_ERROR); 80echo $arr_enc . "\n"; 81 82echo "DECODE AGAIN: AS OBJECT\n"; 83$obj = json_decode($obj_enc); 84var_dump($obj); 85echo "DECODE AGAIN: AS ARRAY\n"; 86$arr = json_decode($arr_enc, true); 87var_dump($arr); 88 89?> 90--EXPECT-- 91Testing: 92[ 93 "JSON Test Pattern pass1", 94 {"object with 1 member":["array with 1 element"]}, 95 {}, 96 [], 97 -42, 98 true, 99 false, 100 null, 101 { 102 "integer": 1234567890, 103 "real": -9876.543210, 104 "e": 0.123456789e-12, 105 "E": 1.234567890E+34, 106 "": 23456789012E666, 107 "zero": 0, 108 "one": 1, 109 "space": " ", 110 "quote": "\"", 111 "backslash": "\\", 112 "controls": "\b\f\n\r\t", 113 "slash": "/ & \/", 114 "alpha": "abcdefghijklmnopqrstuvwyz", 115 "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWYZ", 116 "digit": "0123456789", 117 "special": "`1~!@#$%^&*()_+-={':[,]}|;.</>?", 118 "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A", 119 "true": true, 120 "false": false, 121 "null": null, 122 "array":[ ], 123 "object":{ }, 124 "address": "50 St. James Street", 125 "url": "http://www.JSON.org/", 126 "comment": "// /* <!-- --", 127 "# -- --> */": " ", 128 " s p a c e d " :[1,2 , 3 129 130, 131 1324 , 5 , 6 ,7 ], 133 "compact": [1,2,3,4,5,6,7], 134 "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}", 135 "quotes": "" \u0022 %22 0x22 034 "", 136 "\/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?" 137: "A key can be any string" 138 }, 139 0.5 ,98.6 140, 14199.44 142, 143 1441066 145 146 147,"rosebud"] 148 149DECODE: AS OBJECT 150array(14) { 151 [0]=> 152 string(23) "JSON Test Pattern pass1" 153 [1]=> 154 object(stdClass)#1 (1) { 155 ["object with 1 member"]=> 156 array(1) { 157 [0]=> 158 string(20) "array with 1 element" 159 } 160 } 161 [2]=> 162 object(stdClass)#2 (0) { 163 } 164 [3]=> 165 array(0) { 166 } 167 [4]=> 168 int(-42) 169 [5]=> 170 bool(true) 171 [6]=> 172 bool(false) 173 [7]=> 174 NULL 175 [8]=> 176 object(stdClass)#3 (31) { 177 ["integer"]=> 178 int(1234567890) 179 ["real"]=> 180 float(-9876.54321) 181 ["e"]=> 182 float(1.23456789E-13) 183 ["E"]=> 184 float(1.23456789E+34) 185 [""]=> 186 float(INF) 187 ["zero"]=> 188 int(0) 189 ["one"]=> 190 int(1) 191 ["space"]=> 192 string(1) " " 193 ["quote"]=> 194 string(1) """ 195 ["backslash"]=> 196 string(1) "\" 197 ["controls"]=> 198 string(5) " 199 199 " 200 ["slash"]=> 201 string(5) "/ & /" 202 ["alpha"]=> 203 string(25) "abcdefghijklmnopqrstuvwyz" 204 ["ALPHA"]=> 205 string(25) "ABCDEFGHIJKLMNOPQRSTUVWYZ" 206 ["digit"]=> 207 string(10) "0123456789" 208 ["special"]=> 209 string(31) "`1~!@#$%^&*()_+-={':[,]}|;.</>?" 210 ["hex"]=> 211 string(17) "ģ䕧覫췯ꯍ" 212 ["true"]=> 213 bool(true) 214 ["false"]=> 215 bool(false) 216 ["null"]=> 217 NULL 218 ["array"]=> 219 array(0) { 220 } 221 ["object"]=> 222 object(stdClass)#4 (0) { 223 } 224 ["address"]=> 225 string(19) "50 St. James Street" 226 ["url"]=> 227 string(20) "http://www.JSON.org/" 228 ["comment"]=> 229 string(13) "// /* <!-- --" 230 ["# -- --> */"]=> 231 string(1) " " 232 [" s p a c e d "]=> 233 array(7) { 234 [0]=> 235 int(1) 236 [1]=> 237 int(2) 238 [2]=> 239 int(3) 240 [3]=> 241 int(4) 242 [4]=> 243 int(5) 244 [5]=> 245 int(6) 246 [6]=> 247 int(7) 248 } 249 ["compact"]=> 250 array(7) { 251 [0]=> 252 int(1) 253 [1]=> 254 int(2) 255 [2]=> 256 int(3) 257 [3]=> 258 int(4) 259 [4]=> 260 int(5) 261 [5]=> 262 int(6) 263 [6]=> 264 int(7) 265 } 266 ["jsontext"]=> 267 string(49) "{"object with 1 member":["array with 1 element"]}" 268 ["quotes"]=> 269 string(27) "" " %22 0x22 034 "" 270 ["/\"쫾몾ꮘﳞ볚 271 271 `1~!@#$%^&*()_+-=[]{}|;:',./<>?"]=> 272 string(23) "A key can be any string" 273 } 274 [9]=> 275 float(0.5) 276 [10]=> 277 float(98.6) 278 [11]=> 279 float(99.44) 280 [12]=> 281 int(1066) 282 [13]=> 283 string(7) "rosebud" 284} 285DECODE: AS ARRAY 286array(14) { 287 [0]=> 288 string(23) "JSON Test Pattern pass1" 289 [1]=> 290 array(1) { 291 ["object with 1 member"]=> 292 array(1) { 293 [0]=> 294 string(20) "array with 1 element" 295 } 296 } 297 [2]=> 298 array(0) { 299 } 300 [3]=> 301 array(0) { 302 } 303 [4]=> 304 int(-42) 305 [5]=> 306 bool(true) 307 [6]=> 308 bool(false) 309 [7]=> 310 NULL 311 [8]=> 312 array(31) { 313 ["integer"]=> 314 int(1234567890) 315 ["real"]=> 316 float(-9876.54321) 317 ["e"]=> 318 float(1.23456789E-13) 319 ["E"]=> 320 float(1.23456789E+34) 321 [""]=> 322 float(INF) 323 ["zero"]=> 324 int(0) 325 ["one"]=> 326 int(1) 327 ["space"]=> 328 string(1) " " 329 ["quote"]=> 330 string(1) """ 331 ["backslash"]=> 332 string(1) "\" 333 ["controls"]=> 334 string(5) " 335 335 " 336 ["slash"]=> 337 string(5) "/ & /" 338 ["alpha"]=> 339 string(25) "abcdefghijklmnopqrstuvwyz" 340 ["ALPHA"]=> 341 string(25) "ABCDEFGHIJKLMNOPQRSTUVWYZ" 342 ["digit"]=> 343 string(10) "0123456789" 344 ["special"]=> 345 string(31) "`1~!@#$%^&*()_+-={':[,]}|;.</>?" 346 ["hex"]=> 347 string(17) "ģ䕧覫췯ꯍ" 348 ["true"]=> 349 bool(true) 350 ["false"]=> 351 bool(false) 352 ["null"]=> 353 NULL 354 ["array"]=> 355 array(0) { 356 } 357 ["object"]=> 358 array(0) { 359 } 360 ["address"]=> 361 string(19) "50 St. James Street" 362 ["url"]=> 363 string(20) "http://www.JSON.org/" 364 ["comment"]=> 365 string(13) "// /* <!-- --" 366 ["# -- --> */"]=> 367 string(1) " " 368 [" s p a c e d "]=> 369 array(7) { 370 [0]=> 371 int(1) 372 [1]=> 373 int(2) 374 [2]=> 375 int(3) 376 [3]=> 377 int(4) 378 [4]=> 379 int(5) 380 [5]=> 381 int(6) 382 [6]=> 383 int(7) 384 } 385 ["compact"]=> 386 array(7) { 387 [0]=> 388 int(1) 389 [1]=> 390 int(2) 391 [2]=> 392 int(3) 393 [3]=> 394 int(4) 395 [4]=> 396 int(5) 397 [5]=> 398 int(6) 399 [6]=> 400 int(7) 401 } 402 ["jsontext"]=> 403 string(49) "{"object with 1 member":["array with 1 element"]}" 404 ["quotes"]=> 405 string(27) "" " %22 0x22 034 "" 406 ["/\"쫾몾ꮘﳞ볚 407 407 `1~!@#$%^&*()_+-=[]{}|;:',./<>?"]=> 408 string(23) "A key can be any string" 409 } 410 [9]=> 411 float(0.5) 412 [10]=> 413 float(98.6) 414 [11]=> 415 float(99.44) 416 [12]=> 417 int(1066) 418 [13]=> 419 string(7) "rosebud" 420} 421ENCODE: FROM OBJECT 422["JSON Test Pattern pass1",{"object with 1 member":["array with 1 element"]},{},[],-42,true,false,null,{"integer":1234567890,"real":-9876.54321,"e":1.23456789e-13,"E":1.23456789e+34,"":0,"zero":0,"one":1,"space":" ","quote":"\"","backslash":"\\","controls":"\b\f\n\r\t","slash":"\/ & \/","alpha":"abcdefghijklmnopqrstuvwyz","ALPHA":"ABCDEFGHIJKLMNOPQRSTUVWYZ","digit":"0123456789","special":"`1~!@#$%^&*()_+-={':[,]}|;.<\/>?","hex":"\u0123\u4567\u89ab\ucdef\uabcd\uef4a","true":true,"false":false,"null":null,"array":[],"object":{},"address":"50 St. James Street","url":"http:\/\/www.JSON.org\/","comment":"\/\/ \/* <!-- --","# -- --> *\/":" "," s p a c e d ":[1,2,3,4,5,6,7],"compact":[1,2,3,4,5,6,7],"jsontext":"{\"object with 1 member\":[\"array with 1 element\"]}","quotes":"" \" %22 0x22 034 "","\/\\\"\ucafe\ubabe\uab98\ufcde\ubcda\uef4a\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',.\/<>?":"A key can be any string"},0.5,98.6,99.44,1066,"rosebud"] 423ENCODE: FROM ARRAY 424["JSON Test Pattern pass1",{"object with 1 member":["array with 1 element"]},[],[],-42,true,false,null,{"integer":1234567890,"real":-9876.54321,"e":1.23456789e-13,"E":1.23456789e+34,"":0,"zero":0,"one":1,"space":" ","quote":"\"","backslash":"\\","controls":"\b\f\n\r\t","slash":"\/ & \/","alpha":"abcdefghijklmnopqrstuvwyz","ALPHA":"ABCDEFGHIJKLMNOPQRSTUVWYZ","digit":"0123456789","special":"`1~!@#$%^&*()_+-={':[,]}|;.<\/>?","hex":"\u0123\u4567\u89ab\ucdef\uabcd\uef4a","true":true,"false":false,"null":null,"array":[],"object":[],"address":"50 St. James Street","url":"http:\/\/www.JSON.org\/","comment":"\/\/ \/* <!-- --","# -- --> *\/":" "," s p a c e d ":[1,2,3,4,5,6,7],"compact":[1,2,3,4,5,6,7],"jsontext":"{\"object with 1 member\":[\"array with 1 element\"]}","quotes":"" \" %22 0x22 034 "","\/\\\"\ucafe\ubabe\uab98\ufcde\ubcda\uef4a\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',.\/<>?":"A key can be any string"},0.5,98.6,99.44,1066,"rosebud"] 425DECODE AGAIN: AS OBJECT 426array(14) { 427 [0]=> 428 string(23) "JSON Test Pattern pass1" 429 [1]=> 430 object(stdClass)#5 (1) { 431 ["object with 1 member"]=> 432 array(1) { 433 [0]=> 434 string(20) "array with 1 element" 435 } 436 } 437 [2]=> 438 object(stdClass)#6 (0) { 439 } 440 [3]=> 441 array(0) { 442 } 443 [4]=> 444 int(-42) 445 [5]=> 446 bool(true) 447 [6]=> 448 bool(false) 449 [7]=> 450 NULL 451 [8]=> 452 object(stdClass)#7 (31) { 453 ["integer"]=> 454 int(1234567890) 455 ["real"]=> 456 float(-9876.54321) 457 ["e"]=> 458 float(1.23456789E-13) 459 ["E"]=> 460 float(1.23456789E+34) 461 [""]=> 462 int(0) 463 ["zero"]=> 464 int(0) 465 ["one"]=> 466 int(1) 467 ["space"]=> 468 string(1) " " 469 ["quote"]=> 470 string(1) """ 471 ["backslash"]=> 472 string(1) "\" 473 ["controls"]=> 474 string(5) " 475 475 " 476 ["slash"]=> 477 string(5) "/ & /" 478 ["alpha"]=> 479 string(25) "abcdefghijklmnopqrstuvwyz" 480 ["ALPHA"]=> 481 string(25) "ABCDEFGHIJKLMNOPQRSTUVWYZ" 482 ["digit"]=> 483 string(10) "0123456789" 484 ["special"]=> 485 string(31) "`1~!@#$%^&*()_+-={':[,]}|;.</>?" 486 ["hex"]=> 487 string(17) "ģ䕧覫췯ꯍ" 488 ["true"]=> 489 bool(true) 490 ["false"]=> 491 bool(false) 492 ["null"]=> 493 NULL 494 ["array"]=> 495 array(0) { 496 } 497 ["object"]=> 498 object(stdClass)#8 (0) { 499 } 500 ["address"]=> 501 string(19) "50 St. James Street" 502 ["url"]=> 503 string(20) "http://www.JSON.org/" 504 ["comment"]=> 505 string(13) "// /* <!-- --" 506 ["# -- --> */"]=> 507 string(1) " " 508 [" s p a c e d "]=> 509 array(7) { 510 [0]=> 511 int(1) 512 [1]=> 513 int(2) 514 [2]=> 515 int(3) 516 [3]=> 517 int(4) 518 [4]=> 519 int(5) 520 [5]=> 521 int(6) 522 [6]=> 523 int(7) 524 } 525 ["compact"]=> 526 array(7) { 527 [0]=> 528 int(1) 529 [1]=> 530 int(2) 531 [2]=> 532 int(3) 533 [3]=> 534 int(4) 535 [4]=> 536 int(5) 537 [5]=> 538 int(6) 539 [6]=> 540 int(7) 541 } 542 ["jsontext"]=> 543 string(49) "{"object with 1 member":["array with 1 element"]}" 544 ["quotes"]=> 545 string(27) "" " %22 0x22 034 "" 546 ["/\"쫾몾ꮘﳞ볚 547 547 `1~!@#$%^&*()_+-=[]{}|;:',./<>?"]=> 548 string(23) "A key can be any string" 549 } 550 [9]=> 551 float(0.5) 552 [10]=> 553 float(98.6) 554 [11]=> 555 float(99.44) 556 [12]=> 557 int(1066) 558 [13]=> 559 string(7) "rosebud" 560} 561DECODE AGAIN: AS ARRAY 562array(14) { 563 [0]=> 564 string(23) "JSON Test Pattern pass1" 565 [1]=> 566 array(1) { 567 ["object with 1 member"]=> 568 array(1) { 569 [0]=> 570 string(20) "array with 1 element" 571 } 572 } 573 [2]=> 574 array(0) { 575 } 576 [3]=> 577 array(0) { 578 } 579 [4]=> 580 int(-42) 581 [5]=> 582 bool(true) 583 [6]=> 584 bool(false) 585 [7]=> 586 NULL 587 [8]=> 588 array(31) { 589 ["integer"]=> 590 int(1234567890) 591 ["real"]=> 592 float(-9876.54321) 593 ["e"]=> 594 float(1.23456789E-13) 595 ["E"]=> 596 float(1.23456789E+34) 597 [""]=> 598 int(0) 599 ["zero"]=> 600 int(0) 601 ["one"]=> 602 int(1) 603 ["space"]=> 604 string(1) " " 605 ["quote"]=> 606 string(1) """ 607 ["backslash"]=> 608 string(1) "\" 609 ["controls"]=> 610 string(5) " 611 611 " 612 ["slash"]=> 613 string(5) "/ & /" 614 ["alpha"]=> 615 string(25) "abcdefghijklmnopqrstuvwyz" 616 ["ALPHA"]=> 617 string(25) "ABCDEFGHIJKLMNOPQRSTUVWYZ" 618 ["digit"]=> 619 string(10) "0123456789" 620 ["special"]=> 621 string(31) "`1~!@#$%^&*()_+-={':[,]}|;.</>?" 622 ["hex"]=> 623 string(17) "ģ䕧覫췯ꯍ" 624 ["true"]=> 625 bool(true) 626 ["false"]=> 627 bool(false) 628 ["null"]=> 629 NULL 630 ["array"]=> 631 array(0) { 632 } 633 ["object"]=> 634 array(0) { 635 } 636 ["address"]=> 637 string(19) "50 St. James Street" 638 ["url"]=> 639 string(20) "http://www.JSON.org/" 640 ["comment"]=> 641 string(13) "// /* <!-- --" 642 ["# -- --> */"]=> 643 string(1) " " 644 [" s p a c e d "]=> 645 array(7) { 646 [0]=> 647 int(1) 648 [1]=> 649 int(2) 650 [2]=> 651 int(3) 652 [3]=> 653 int(4) 654 [4]=> 655 int(5) 656 [5]=> 657 int(6) 658 [6]=> 659 int(7) 660 } 661 ["compact"]=> 662 array(7) { 663 [0]=> 664 int(1) 665 [1]=> 666 int(2) 667 [2]=> 668 int(3) 669 [3]=> 670 int(4) 671 [4]=> 672 int(5) 673 [5]=> 674 int(6) 675 [6]=> 676 int(7) 677 } 678 ["jsontext"]=> 679 string(49) "{"object with 1 member":["array with 1 element"]}" 680 ["quotes"]=> 681 string(27) "" " %22 0x22 034 "" 682 ["/\"쫾몾ꮘﳞ볚 683 683 `1~!@#$%^&*()_+-=[]{}|;:',./<>?"]=> 684 string(23) "A key can be any string" 685 } 686 [9]=> 687 float(0.5) 688 [10]=> 689 float(98.6) 690 [11]=> 691 float(99.44) 692 [12]=> 693 int(1066) 694 [13]=> 695 string(7) "rosebud" 696} 697