简体   繁体   English

用PHP解析JSON

[英]Parse JSON in PHP

I'm really struggling to parse a JSON string with PHP. 我真的很难用PHP解析JSON字符串。 The link below contains the JSON that I'm trying to parse: http://finance.google.com/finance/info?client=ig&q=NASDAQ:MSFT,NASDAQ:GOOG,NASDAQ:AAPL 下面的链接包含我要解析的JSON: http : //finance.google.com/finance/info?client=ig&q= NASDAQ: MSFT ,NASDAQ: GOOG ,NASDAQ: AAPL

Can anyone help, I've tried everything but I'm still new to this. 任何人都可以帮忙,我已经尝试了一切,但我仍然是新手。

Thanks. 谢谢。

if there are no // in start of string use 如果在字符串开头没有//

$json_data = '[ { "id": "358464" ,"t" : "MSFT" ,"e" : "NASDAQ" ,"l" : "25.80" ,"l_cur" : "25.80" ,"s": "1" ,"ltt":"4:00PM EDT" ,"lt" : "Sep 2, 4:00PM EDT" ,"c" : "-0.41" ,"cp" : "-1.56" ,"ccol" : "chr" ,"el": "25.44" ,"el_cur": "25.44" ,"elt" : "Sep 6, 4:35AM EDT" ,"ec" : "-0.36" ,"ecp" : "-1.40" ,"eccol" : "chr" ,"div" : "0.16" ,"yld" : "2.48" } ,{ "id": "694653" ,"t" : "GOOG" ,"e" : "NASDAQ" ,"l" : "524.84" ,"l_cur" : "524.84" ,"s": "0" ,"ltt":"4:00PM EDT" ,"lt" : "Sep 2, 4:00PM EDT" ,"c" : "-7.66" ,"cp" : "-1.44" ,"ccol" : "chr" } ,{ "id": "22144" ,"t" : "AAPL" ,"e" : "NASDAQ" ,"l" : "374.05" ,"l_cur" : "374.05" ,"s": "1" ,"ltt":"4:00PM EDT" ,"lt" : "Sep 2, 4:00PM EDT" ,"c" : "-6.98" ,"cp" : "-1.83" ,"ccol" : "chr" ,"el": "371.45" ,"el_cur": "371.45" ,"elt" : "Sep 6, 6:02AM EDT" ,"ec" : "-2.60" ,"ecp" : "-0.70" ,"eccol" : "chr" ,"div" : "" ,"yld" : "" } ]';
$json_object = json_decode($json_data);

with // use //使用

$json_data = '......';
$json_data = trim(substr($json_data,2));
$json_object = json_decode($json_data);

result 结果

array (
  0 => 
  stdClass::__set_state(array(
     'id' => '358464',
     't' => 'MSFT',
     'e' => 'NASDAQ',
     'l' => '25.80',
     'l_cur' => '25.80',
     's' => '1',
     'ltt' => '4:00PM EDT',
     'lt' => 'Sep 2, 4:00PM EDT',
     'c' => '-0.41',
     'cp' => '-1.56',
     'ccol' => 'chr',
     'el' => '25.44',
     'el_cur' => '25.44',
     'elt' => 'Sep 6, 4:35AM EDT',
     'ec' => '-0.36',
     'ecp' => '-1.40',
     'eccol' => 'chr',
     'div' => '0.16',
     'yld' => '2.48',
  )),
  1 => 
  stdClass::__set_state(array(
     'id' => '694653',
     't' => 'GOOG',
     'e' => 'NASDAQ',
     'l' => '524.84',
     'l_cur' => '524.84',
     's' => '0',
     'ltt' => '4:00PM EDT',
     'lt' => 'Sep 2, 4:00PM EDT',
     'c' => '-7.66',
     'cp' => '-1.44',
     'ccol' => 'chr',
  )),
  2 => 
  stdClass::__set_state(array(
     'id' => '22144',
     't' => 'AAPL',
     'e' => 'NASDAQ',
     'l' => '374.05',
     'l_cur' => '374.05',
     's' => '1',
     'ltt' => '4:00PM EDT',
     'lt' => 'Sep 2, 4:00PM EDT',
     'c' => '-6.98',
     'cp' => '-1.83',
     'ccol' => 'chr',
     'el' => '371.45',
     'el_cur' => '371.45',
     'elt' => 'Sep 6, 6:02AM EDT',
     'ec' => '-2.60',
     'ecp' => '-0.70',
     'eccol' => 'chr',
     'div' => '',
     'yld' => '',
  )),
)

json_decode documentation: http://php.net/json_decode json_decode文档: http : json_decode

In your source they are commenting out the JSON. 在您的来源中,他们正在注释掉JSON。 It's pretty weird that they do it, but anyway the // at the start is screwing it up. 他们这样做很奇怪,但是无论如何//开始时就搞砸了。

$url = 'http://finance.google.com/finance/info?client=ig&q=NASDAQ:MSFT,NASDAQ:GOOG,NASDAQ:AAPL';
$json = preg_replace('#^\s+//#', '', file_get_contents($url) );
$decoded = json_decode( $json );
var_dump( $decoded );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM