0

我的 json 文件的内容格式如下:

[
  {
    "id": 1,
    "keyword_filter": null,
    "name": "My Name ",
    "type": "some product",
    "sku": "1234567",
    "nested_obj": {
      "url": "http://someurl.com",
      "resource": "/orders"
    }
  }
]

我可以将它读入这样的变量:

$json_string = file_get_contents($jsonFile);

最终,我需要从中创建一个制表符分隔的文件,但我什至似乎无法对其进行迭代。这是我尝试过的:

foreach($json_string as $item) {
    echo $item;
}

这给了我一个错误,说我在我的 foreach 循环中提供了一个无效的参数。

我尝试将它读入这样的数组:

$json_array = file($jsonFile);
foreach($json_array as $item) {
    echo $item;
}

这回显了一个包含 1 个项目的数组,即 JSON 对象。

有人可以告诉我如何进入那个 JSON 对象,以便我可以迭代它吗?将其编码回 JSON 只是双重转义引号并将其解码返回 NULL。

非常感谢这里的任何帮助......并且非常感谢任何关于转换为制表符分隔文件的提示,但我只需第一步就可以了。

谢谢。

4

3 回答 3

2

试试这个 :

json_decode :将 json 字符串转换为数组:http ://php.net/manual/en/function.json-decode.php

$array  = json_decode($json_string, true);

echo "<pre>";
print_r($array);

/// write the forech basd on the array out put.    

foreach($array as $item) {
    echo $item['id'];
}
于 2013-02-21T09:43:07.557 回答
1

我试过这个:

<?php

$str = '[
  {
    "id": 1,
    "keyword_filter": null,
    "name": "My Name ",
    "type": "some product",
    "sku": "1234567",
    "nested_obj": {
      "url": "http://someurl.com",
      "resource": "/orders"
    }
  }
]';


$array  = json_decode($str, true);

echo "<pre>";
print_r($array);

/// write the forech basd on the array out put.    

foreach($array as $item) {
    echo $item['id'];
}

?>

我得到了输出:

Array
(
    [0] => Array
        (
            [id] => 1
            [keyword_filter] => 
            [name] => My Name 
            [type] => some product
            [sku] => 1234567
            [nested_obj] => Array
                (
                    [url] => http://someurl.com
                    [resource] => /orders
                )

        )

)
1

这就是你想要的输出。在数组的末尾,您可以看到1它的值echo $item['id'];

于 2013-02-21T10:14:34.687 回答
1

您需要从中创建一个制表符分隔的文件

$json_string = json_decode(file_get_contents($jsonFile), true);

foreach ($json_string as $k => $vals){
 // tab delimited header
 if ($k == 0) {
  echo join ("\t", array_keys($vals))."\n";
 }
 // tab delimited row
 echo join ("\t", $vals)."\n";

}
于 2013-02-21T10:22:59.803 回答