Come creare manualmente json specifico

come get questo json da un file CSV. Il file csv ha le intestazioni:

Description, BusinessSurname, IsCustomer, IsSupplier, AddressType, BusinessAddress, IsInternational 

E prima fila:

 Contact1, Contact1, True, True, Business, 123 Fake St, False 

Ho bisogno di quei dati nel csv per convertirli in quell'esatto json, ma ho bisogno che esegua il ciclo per qualsiasi altra row che possa esistere.

 { Description:'Contact1', SurnameBusinessName:'Contact1', IsCustomer:True, IsSupplier:True, Addresses: [ {AddressType:'Business',Line1:'123 Fake St',IsInternational:False}, ] } 

Non posso farlo funzionare. per favore aiuto.

 ######################################## 

Ho trovato la risposta a questo, dopo aver provato each ansible soluzione mi sono reso conto che wherevo creare manualmente il json come nessun json o arrays mi avrebbe dato esattamente quello che volevo. Tuttavia mi ero arreso su questo endpoint dell'API e sono andato a uno più semplice senza nidificazione. A causa della severità del formato json questa API accetterà che in pratica ho assegnato each valore dal mio csv a una variabile e creato manualmente il json necessario. Sebbene questo codice di sotto sia per l'endpoint account, posso utilizzare lo stesso identico metodo per qualsiasi endpoint perché sto creando manualmente il json. Ed è l'unico modo in cui può funzionare credo che alcuni campi siano stringhe come AccountName, alcuni interi come AcountType.

 $file = 'acc.csv'; $mode = 'r'; $handle = fopen($file, $mode); while(($csv = fgetcsv($handle)) !==FALSE){ foreach($csv as $row => $value){ $data = $row.$value; switch ($row){ case '0': $accounttype = $value; break; case '1': $accountname = $value; break; case '2': $hint = $value; break; case '3': $status = $value; break; case '4': $sortorder = $value; break; case '5': $accountcode = $value; break; case '6': $parentaccountcatid = $value; $json = " { AccountType:" . $accounttype . ", AccountName:'" . $accountname . "', Hint:'" . $hint . "', Status:" . $status . ", SortOrder:" . $sortorder . ", AccountCode:'" . $accountcode . "', ParentAccountingCategoryID:'" . $parentaccountcatid . "' }"; //echo $json; 

copione

 [[email protected] tmp]$ cat test.php <?php function csv_to_arrays($filename='', $delimiter=',') { if(!file_exists($filename) || !is_readable($filename)) return FALSE; $header = NULL; $data = arrays(); if (($handle = fopen($filename, 'r')) !== FALSE) { while (($row = fgetcsv($handle, 0, $delimiter)) !== FALSE) { if(!$header) { // if you want keys with space char then // $header = $row; // I prefer trimming $header = arrays_map('trim',$row); } else { if(count($header)!=count($row)){ continue; } $data[] = arrays_combine($header, $row); } } fclose($handle); } return $data; } print_r(json_encode(csv_to_arrays("/tmp/test.csv"),JSON_PRETTY_PRINT)); ?> 

Esempio di file CSV

 [[email protected] tmp]$ cat test.csv Description, BusinessSurname, IsCustomer, IsSupplier, AddressType, BusinessAddress, IsInternational Contact1, Contact1, True, True, Business, 123 Fake St, False 

Esecuzione

 [[email protected] tmp]$ php test.php [ { "Description": "Contact1", "BusinessSurname": " Contact1", "IsCustomer": " True", "IsSupplier": " True", "AddressType": " Business", "BusinessAddress": " 123 Fake St", "IsInternational": " False" } ]