2013-04-18 27 views
-3

我從文件中獲得以下JSON輸出。我如何將「SLL」中的「last」提取到一個php變量中?如何將一些JSON解碼爲PHP

{ 
    "USD" : {"15m" : 93.89699, "last" : 93.89699, "buy" : 93.25001, "sell" : 93.89698, "24h" : 84.3, "symbol" : "$"}, 
    "CNY" : {"15m" : 573.0, "last" : 573.0, "buy" : 563.76252, "sell" : 588.11678, "24h" : 572.65, "symbol" : "¥"}, 
    "JPY" : {"15m" : 9100.0, "last" : 9100.0, "buy" : 9100.0, "sell" : 9150.0, "24h" : 8240.81, "symbol" : "¥"}, 
    "SGD" : {"15m" : 115.20412, "last" : 115.20412, "buy" : 112.64417, "sell" : 117.51034, 
    "SLL" : {"15m" : 23207.99, "last" : 23207.99, "buy" : 23207.99, "sell" : 23207.99, "24h" : 23207.99, "symbol" : "L$"}, 
} 
+4

http://mattgemmell.com/2008/12/08/what-have-you-tried/ – MangeshBiradar

+1

照顧你的JSON是有效的。你的不是,它有一個尾隨的逗號(在大多數瀏覽器中可以使用,但仍然不允許),這會破壞PHP json_decode。 JSON中的 – ToBe

+1

字符也需要使用UTF-8編碼。如果您不這樣做,您可能會遇到符號問題。 (例如:\ u012) – ToBe

回答

1

首先看你的JSON有一些違規行爲:

錯誤JSON:

{ 
    "USD" : {"15m" : 93.89699, "last" : 93.89699, "buy" : 93.25001, "sell" : 93.89698, "24h" : 84.3, "symbol" : "$"}, 
    "CNY" : {"15m" : 573.0, "last" : 573.0, "buy" : 563.76252, "sell" : 588.11678, "24h" : 572.65, "symbol" : "¥"}, 
    "JPY" : {"15m" : 9100.0, "last" : 9100.0, "buy" : 9100.0, "sell" : 9150.0, "24h" : 8240.81, "symbol" : "¥"}, 
    "SGD" : {"15m" : 115.20412, "last" : 115.20412, "buy" : 112.64417, "sell" : 117.51034, 
    "SLL" : {"15m" : 23207.99, "last" : 23207.99, "buy" : 23207.99, "sell" : 23207.99, "24h" : 23207.99, "symbol" : "L$"}, 
} 

右JSON:

{ 
    "USD":{"15m":93.89699,"last":93.89699,"buy":93.25001,"sell":93.89698,"24h":84.3,"symbol":"$"}, 
    "CNY":{"15m":573,"last":573,"buy":563.76252,"sell":588.11678,"24h":572.65,"symbol":"\u00a5"}, 
    "JPY":{"15m":9100,"last":9100,"buy":9100,"sell":9150,"24h":8240.81,"symbol":"\u00a5"}, 
    "SGD":{"15m":115.20412,"last":115.20412,"buy":112.64417,"sell":117.51034}, 
    "SLL":{"15m":23207.99,"last":23207.99,"buy":23207.99,"sell":23207.99,"24h":23207.99,"symbol":"L$"} 
} 

}

對於採取SLL節點的最後一個元素:

$arr = json_decode($json,1); 
end($arr["SLL"]); 
+0

不是rigth json –

+1

尾隨逗號更糟糕(指原來);) – ToBe

+0

我知道,符號,我知道。固定。 –

1

您需要的JSON值進行解碼。

使用

$decode = json_decode(#your json value#); 
echo $decode->SLL->last; 
+0

這是一個謝謝:) –

0
$jsonArr='{ 
    "USD" : {"15m" : 93.89699, "last" : 93.89699, "buy" : 93.25001, "sell" : 93.89698, "24h" : 84.3, "symbol" : "$"}, 
    "CNY" : {"15m" : 573.0, "last" : 573.0, "buy" : 563.76252, "sell" : 588.11678, "24h" : 572.65, "symbol" : "¥"}, 
    "JPY" : {"15m" : 9100.0, "last" : 9100.0, "buy" : 9100.0, "sell" : 9150.0, "24h" : 8240.81, "symbol" : "¥"}, 
    "SGD" : {"15m" : 115.20412, "last" : 115.20412, "buy" : 112.64417, "sell" : 117.51034}, 
    "SLL" : {"15m" : 23207.99, "last" : 23207.99, "buy" : 23207.99, "sell" : 23207.99, "24h" : 23207.99, "symbol" : "L$"} 
}'; 

print_r(json_decode($jsonArr)); 

輸出

stdClass Object 
(
    [USD] => stdClass Object 
     (
      [15m] => 93.89699 
      [last] => 93.89699 
      [buy] => 93.25001 
      [sell] => 93.89698 
      [24h] => 84.3 
      [symbol] => $ 
     ) 

    [CNY] => stdClass Object 
     (
      [15m] => 573 
      [last] => 573 
      [buy] => 563.76252 
      [sell] => 588.11678 
      [24h] => 572.65 
      [symbol] => ¥ 
     ) 

    [JPY] => stdClass Object 
     (
      [15m] => 9100 
      [last] => 9100 
      [buy] => 9100 
      [sell] => 9150 
      [24h] => 8240.81 
      [symbol] => ¥ 
     ) 

    [SGD] => stdClass Object 
     (
      [15m] => 115.20412 
      [last] => 115.20412 
      [buy] => 112.64417 
      [sell] => 117.51034 
     ) 

    [SLL] => stdClass Object 
     (
      [15m] => 23207.99 
      [last] => 23207.99 
      [buy] => 23207.99 
      [sell] => 23207.99 
      [24h] => 23207.99 
      [symbol] => L$ 
     ) 

) 

這會給你最後你問

$decodeArr = json_decode($jsonArr); 

echo end($decodeArr->SLL);