我从网站上获取json数据。然后,我将此数据保存到.txt
文件。
{
m: [
{
d: '08.01.2015',
m: [
[
2875678,
'id1',
77,
'id2',
'100',
0,
'21:20',
'',
'',
'3',
'',
'1',
'-',
'1.09',
'2.06',
'2.05',
'1.40',
'92334',
{
tId: 92334
},
'\u0130S1',
'14',
'20'
]
]
}
]
}
.txt文件的内容如上所述。我想将此.txt文件设为数组。但在使用json_decode
时,结果为空。
$file= fopen("test.txt", "r");
if( $file == false ) {
echo ( "error!" );
exit();
}else {
while (!feof($file)) {
$read = fgets($file);
$decode = json_decode($read, true);
print_r($decode);
}
}
fclose($file);
如何将其转换为数组? EDİT:使用此代码保存的数据。
$data = cURL($url);
$urlHandle = _fwrite($data);
$datam = $data;
$data = json_decode($datam,true);
function _fwrite($data1)
{
$file = fopen('test.txt','w');
fwrite($file,$data1);
fclose($file);
}
答案 0 :(得分:0)
这是你的创可贴解决方案。这适用于您提供的示例输入。它会起作用......直到它没有,因为可能的异常但不包含在你的帖子中。
您需要花时间来确定输入数据格式错误的位置和原因。良好的应用程序是建立在强大/稳定的基础之上的 - 您的应用程序尚无法享受这种稳定性。
代码:(Demo)
$badjson=<<<BADJSON
{
m: [
{
d: '08.01.2015',
m: [
[
2875678,
'id1',
77,
'id2',
'100',
0,
'21:20',
'',
'',
'3',
'',
'1',
'-',
'1.09',
'2.06',
'2.05',
'1.40',
'92334',
{
tId: 92334
},
'\u0130S1',
'14',
'20'
]
]
}
]
}
BADJSON;
var_export(json_decode(preg_replace(["~^\s+\K\w+(?=:)|^\s+\K\d+(?=,?\s*$)~m","~'~"],['"$0"','"'],$badjson),true));
输出:
array (
'm' =>
array (
0 =>
array (
'd' => '08.01.2015',
'm' =>
array (
0 =>
array (
0 => '2875678',
1 => 'id1',
2 => '77',
3 => 'id2',
4 => '100',
5 => '0',
6 => '21:20',
7 => '',
8 => '',
9 => '3',
10 => '',
11 => '1',
12 => '-',
13 => '1.09',
14 => '2.06',
15 => '2.05',
16 => '1.40',
17 => '92334',
18 =>
array (
'tId' => 92334,
),
19 => 'İS1',
20 => '14',
21 => '20',
),
),
),
),
)