我的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。
这里的任何帮助都将非常感激...并且任何关于转换为制表符分隔文件的提示都会非常受欢迎,但我会在第一步就没问题。
感谢。
答案 0 :(得分: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'];
}
答案 1 :(得分: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'];
答案 2 :(得分: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";
}