2017-06-26 12 views
-2

私は見出しを.CSVファイルがあります。特定のJSONにfgetcsv応答を変換

Description, BusinessSurname, IsCustomer, IsSupplier, AddressType, Business 
Address, IsInternational. 

最初の行:

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

残りの行は重要ではない、そのちょうどより多くのそのような - 例。私はそこにいくつかの行のデータを持っています。

私はこの形式のJSONにそれを取得する必要があり

{ 
Description:'Desc_47AE3208-87F5-4BBA-BE40-AA4130AB4768', 
SurnameBusinessName:'Name_Business', 
IsCustomer:true, 
IsSupplier:true, 
Addresses: 
[ 
{AddressType:'Business',Line1:'addr1_bus',IsInternational:false}, 
{AddressType:'Postal',Line1:'addr1_pos',IsInternational:true} 
] 
} 

私はいくつかの異なる方法を試してみましたが、それらのどれもが、特に私にネストされたアドレスを使用してこのようなJSONを与えません。私は2番目の住所(郵便番号)を残すことができます。私はこのコードを使用する場合

["Contact1","Contact1","TRUE","TRUE","Business","123 High Street Sydney NSW 2000","FALSE"] 
["Contact2","Contact2","TRUE","TRUE","Business","124 High Street Sydney NSW 2000","FALSE"] 
["Contact3","Contact3","TRUE","TRUE","Business","125 High Street Sydney NSW 2000","FALSE"] 

私は必要なJSONを取得する方法があると私は得ることができない場合に必要:

 $filename = 'contacts1.csv'; 
     $handle = fopen($filename, 'r'); 
     $count = 0; 
     while (($data = fgetcsv($handle)) !== FALSE) { 
      $count++; 
      if ($count == 1){ 
       continue; 
      } 
     $json = json_encode($data, true); 
     echo $json; 
     }; 

を私には、例えばこれを取得しますjsonが自動的に、各行の値を抽出して変数に代入し、forループ、whileループなどを使って各行に必要なjsonを手動で作成する方法はありますか? EG:

+0

とcsvヘッダー - show csv rows – RomanPerekhrest

+0

私はcsv行の例を示しました。ありがとう。そして、あなたはすでに私が得ていた出力を見て、csvの行にあったものを見ることができます。基本的に同じこと。 – user8114890

+0

ここでは既に回答済みです:https://stackoverflow.com/questions/44781279/how-to-make-fgetcsv-to-be-the-json-i-wantadfasdgfasdf/44781458#44781458 –

答えて

0

私はこの回答を見つけましたが、私はこのAPIエンドポイントをあきらめて、入れ子なしで単純なものに行きました。 json形式の厳密さのため、このAPIは基本的に私のCSVの各値を変数に割り当て、手動で必要なJSONを作成します。以下のこのコードはAccountsエンドポイント用ですが、私は手動でjsonを作成しているので、どのエンドポイントにも全く同じメソッドを使用できます。そして、それが働く唯一の方法は、AccountNameのような文字列、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; 
関連する問題