2012-03-26 125 views
3

我有一个JSON字符串(外部文件),它有一个可以具有FALSE或TRUE作为值的元素。在文件中,真实或虚假的IS在那里。然而,在我使用json_decode之后,真或假会丢失。为什么?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。

+3

显示代码/ JSON。 – 2012-03-26 14:04:26

+0

来自你的代码的例子会有所帮助。 – h00ligan 2012-03-26 14:05:30

+2

您希望得到一个答案,但不向我们展示您的JSON或用于检查json_decode之后值是否仍然存在的代码? – Paulpro 2012-03-26 14:05:31

回答

3

print_r不显示类型,所以它将显示0代表假,1代表真。 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) 
}