数据中的JSON .txt文件转换数组

时间:2018-02-18 11:39:24

标签: php arrays json

我从网站上获取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);
  }

1 个答案:

答案 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',
        ),
      ),
    ),
  ),
)