首页 > 解决方案 > PHP:将复杂的 json 输出到 csv

问题描述

我正在寻找一种解决方案来呈现这样的 json 字符串:

 {"result_count":5,"total_count":"1102","next_offset":5,"entry_list":[{"id":"00003010000000","module_name":"Contacts","name_value_list":{"id":{"name":"id","value":"00003010000000"},"name":{"name":"name","value":"Undefiniert"},"phone_work":{"name":"phone_work","value":""},"phone_mobile":{"name":"phone_mobile","value":"01"}}},{"id":"00003015000003","module_name":"Contacts","name_value_list":{"id":{"name":"id","value":"00003015000003"},"name":{"name":"name","value":"Christian X"},"phone_work":{"name":"phone_work","value":""},"phone_mobile":{"name":"phone_mobile","value":"0043 699 23231"}}},{"id":"00003015000005","module_name":"Contacts","name_value_list":{"id":{"name":"id","value":"00003015000005"},"name":{"name":"name","value":"Mario X"},"phone_work":{"name":"phone_work","value":"0043 1 232 151"},"phone_mobile":{"name":"phone_mobile","value":"0043 699 1112"}}},{"id":"00003015000006","module_name":"Contacts","name_value_list":{"id":{"name":"id","value":"00003015000006"},"name":{"name":"name","value":"Renate X"},"phone_work":{"name":"phone_work","value":"0043 1232 133"},"phone_mobile":{"name":"phone_mobile","value":""}}},{"id":"00003015000007","module_name":"Contacts","name_value_list":{"id":{"name":"id","value":"00003015000007"},"name":{"name":"name","value":"Harald KrX"},"phone_work":{"name":"phone_work","value":"0043 232 150"},"phone_mobile":{"name":"phone_mobile","value":"00423"}}}],"relationship_list":[{"link_list":[{"name":"accounts","records":[{"link_value":{"name":{"name":"name","value":"(X) X"}}}]}]},{"link_list":[{"name":"accounts","records":[{"link_value":{"name":{"name":"name","value":"(Y) Y"}}}]}]},{"link_list":[{"name":"accounts","records":[{"link_value":{"name":{"name":"name","value":"(C) C"}}}]}]},{"link_list":[{"name":"accounts","records":[{"link_value":{"name":{"name":"name","value":"(D) D"}}}]}]},{"link_list":[{"name":"accounts","records":[{"link_value":{"name":{"name":"name","value":"(E) E"}}}]}]}]}

到生成内容的 CSV 文件中

"ID","NAME","PHONE_WORK","PHONE_MOBILE","COMPANY"

所以在这个示例中:

"00003015000003","Christian X","","0043 699 23231","X"<br/>
....<br/>
...

我想这很复杂......但也许有人可以在这里帮助我。

标签: phpjsoncsvoutput

解决方案


没那么难:

<?php

$json = '....';
$data = json_decode($json);

# print_r($data); #de-comment to debug

# print title
fputcsv(STDOUT,array("ID","NAME","PHONE_WORK","PHONE_MOBILE","COMPANY"));

foreach ( $data->entry_list as &$rec )
{
    $val = &$rec->name_value_list;
    fputcsv(STDOUT,array( $val->id->value,
                          $val->name->value,
                          $val->phone_work->value,
                          $val->phone_mobile->value ));
    # no data available for COMPANY!
}
?>

推荐阅读