php 无法将获取的json数据转换成数组,结果是 null

q|0_0|p 2019-10-20 02:00:42
我有一问题请教各位高手:我在获取的json数据无法转换成数组!我尝试了网上的几种方法结果都失败。结果是 null
现在我将问题呈上:
短短几行代码却耗费了几小时还是不能解决.


$url = 'http://home.flashdata2.jrj.com.cn/limitStatistic/dtForce/20190724.js';
$check = file_get_contents($url);

$result = '{"test":[' . trim(trim(substr($check, strripos($check, "Data") + 7), ']};')) . ']}';
echo $result;
var_dump(json_decode($result, true));exit;

一、接口获取的数据并非标准的json格式,我将其进行的并接。
原始数据
var yzb_dtForce={"summary":{size:1,time:"2019-07-24 15:59:55"}, "column":{stockcode:0,stockname:1,nowPrice:2,priceLimit:3,fcb:4,flb:5,fdMoney:6,firstZtTime:7,lastZtTime:8,opentime:9,zhenfu:10,force : 11}, "Data":[["600485","*ST新海",9.2,-4.96,5182.805,0.18929227,3.15653555E9,"09:25:04","09:25:04",0,0.0,100.0] ]};


输出的数据

{"test":[["600485","*ST 新海",9.2,-4.96,5182.805,0.18929227,3.15653555E9,"09:25:04","09:25:04",0,0.0,100.0]]}



二、用我拼接好的数据请求是可以正常 json 转成数组.

$check = file_get_contents('php://input');
var_dump(json_decode($check, true));exit;


array (size=1)
'test' =>
array (size=1)
0 =>
array (size=12)
0 => string '600485' (length=6)
1 => string '*ST 新海' (length=15)
2 => float 9.2
3 => float -4.96
4 => float 5182.805
5 => float 0.18929227
6 => float 3156535550
7 => string '09:25:04' (length=8)
8 => string '09:25:04' (length=8)
9 => int 0
10 => float 0
11 => float 100

希望高手帮助实现的目标
能将在php环境下,将获取的数据成功地转换成数组!
——期待高手们的帮助,如获解决,本人不胜感激!
...全文
315 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yt_php 2019-10-20
  • 打赏
  • 举报
回复
引用 2 楼 yt_php 的回复:
不知道你的需求,php中通过js文件取数据,没咋见过这么干的
一种办法,参考。

//location.php内容 跳转到test.php
<script src="http://home.flashdata2.jrj.com.cn/limitStatistic/dtForce/20190724.js"></script>
<script>
	var yzb_dtForce =  JSON.stringify(yzb_dtForce);
	console.log(yzb_dtForce);

	window.location.href="test.php?yzb_dtForce="+yzb_dtForce
</script>

//test.php 接收get参数
<?php
$yzb_dtForce = $_GET['yzb_dtForce'];
print_r( json_decode($yzb_dtForce,true));

//Array ( [summary] => Array ( [size] => 1 [time] => 2019-07-24 15:59:55 ) [column] => Array ( [stockcode] => 0 [stockname] => 1 [nowPrice] => 2 [priceLimit] => 3 [fcb] => 4 [flb] => 5 [fdMoney] => 6 [firstZtTime] => 7 [lastZtTime] => 8 [opentime] => 9 [zhenfu] => 10 [force] => 11 ) [Data] => Array ( [0] => Array ( [0] => 600485 [1] => *ST信威 [2] => 9.2 [3] => -4.96 [4] => 5182.805 [5] => 0.18929227 [6] => 3156535550 [7] => 09:25:04 [8] => 09:25:04 [9] => 0 [10] => 0 [11] => 100 ) ) )
yt_php 2019-10-20
  • 打赏
  • 举报
回复
不知道你的需求,php中通过js文件取数据,没咋见过这么干的
于小九 2019-10-20
  • 打赏
  • 举报
回复
//json数组操作必须为标准的UTF-8编码,经测试直接读取接口返回信息第二位为GB2312编码导致的json_encode返回false与json_decode返回null的问题,所以在操作前先转换一下为标准UTF-8格式即可正常操作。 <?php $url = 'http://home.flashdata2.jrj.com.cn/limitStatistic/dtForce/20190724.js'; $check = file_get_contents($url); echo $str = "{\"test\":[".mb_convert_encoding(substr($check, strripos($check, "Data") + 8,strripos($check, "] ]};") -6),"UTF-8","GB2312") . "]}"; var_dump(json_decode($str,true)); /* $str = mb_convert_encoding(substr($check, strripos($check, "Data") + 8,strripos($check, "] ]};") -6),"UTF-8","GB2312"); $arr = str_replace("\"","",explode(",",$str)); var_dump($arr); $arr2 = "{\"test\":".json_encode($arr)."}"; var_dump(json_decode($arr2,true)); */ //$arr = '{"test":["600485","*ST\ufffd\ufffd\ufffd\ufffd",9.1999999999999993,-4.96,5182.8050000000003,0.18929227000000001,3156535550,"09:25:04","09:25:04",0,0,100]}'; //var_dump(json_decode($arr,true));

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧