потеря данных json_decode - PullRequest
       12

потеря данных json_decode

3 голосов
/ 26 марта 2012

У меня есть строка JSON (внешний файл), в которой есть элемент, который может иметь значение FALSE или TRUE в качестве значения.В файле есть истина или ложь.Однако после того, как я использую json_decode, истина или ложь теряются.Почему?

JSON действителен, он состоит из множества блоков

{
   "surroundedDebuff":true,
   "citizenId":108981,
   "citizenship":19,
   "berserk":true,
   "defenderSide":false,
   "weapon":0,
   "time":"25-03-2012 16:07:13:442",
   "damage":65
}

(это повторяется много раз), проверка выполняется простым print_r.

1 Ответ

3 голосов
/ 26 марта 2012

print_r не показывает типы, поэтому будет отображать 0 для false и 1 для true. var_dump покажет, что значения фактически являются логическими значениями.

$decoded = json_decode('{"surroundedDebuff":true,"citizenId":108981,"citizenship":19,"berserk":true,"defenderSide":false,"weapon":0,"time":"25-03-2012 16:07:13:442","damage":65}');

print_r($decoded);
var_dump($decoded);

Выходы:

stdClass Object
(
    [surroundedDebuff] => 1
    [citizenId] => 108981
    [citizenship] => 19
    [berserk] => 1
    [defenderSide] => 
    [weapon] => 0
    [time] => 25-03-2012 16:07:13:442
    [damage] => 65
)
object(stdClass)#1 (8) {
  ["surroundedDebuff"]=>
  bool(true)
  ["citizenId"]=>
  int(108981)
  ["citizenship"]=>
  int(19)
  ["berserk"]=>
  bool(true)
  ["defenderSide"]=>
  bool(false)
  ["weapon"]=>
  int(0)
  ["time"]=>
  string(23) "25-03-2012 16:07:13:442"
  ["damage"]=>
  int(65)
}
...