[JavaScript] 將 CSV 檔案轉換成 JSON 資料

我們在拿到客戶提供的資料的時候常常會拿到 excel 檔案(這算幸福的)
至少我們可以簡單的利用一些軟體轉成 csv丟進資料庫裡處理。如果搭配個後端 API 基本上資料都不會是太大的問題可以做成 JSON 供 JavaScript 使用,但是如果在沒有後端或是資料庫的環境中呢?


首先我們先把 csv 檔案放到 server上 利用 $.get() 取得內容,接著將內容String 丟進我們待會會用到的 csvJSON 外掛 function 中。就會取得 JSON
但是這個時候的 JSON 還是 String 的形態所以還無法被解析,我們再加個 JSON.parse() 就可以拿到整個 JSON 物件摟!


function 來源:
https://gist.github.com/iwek/7154578

利用 google 取得經緯度

根據標準google推出的做法,我們需要串接
http://maps.googleapis.com/maps/api/geocode/json?address=地址
這支API ,不過這支API是有限制使用量的
最近遇到一個問題就是我要批次轉換地址和經緯度,結果就被封鎖起來了

現在這個問題有解決方案了,亂逛亂逛的結果讓我找到另一支隱藏的API。(正確來源我也不知道打哪來的),順手就寫成一個 function 備用吧!


下面的兩個 function 需要同時使用,因為getLatLng會需要用到object_2_array這個函式
function getLatLng($address)
{       
 // $address = urlencode($address);
    $url = 'http://maps.google.com/maps/geo?q='.$address.'';
    $curl = curl_init() ;
    curl_setopt($curl , 
            CURLOPT_URL , 
            "$url") ;
     
    curl_setopt($curl , CURLOPT_RETURNTRANSFER , 1) ;
         
    $info = curl_exec($curl) ;
 
    curl_close($curl) ;
 // print_r($info);
 
         $a = json_decode($info);
   $b = object_2_array($a->Placemark);
  $c = object_2_array($b[0]->ExtendedData);
  $d = object_2_array($c['LatLonBox']);
  // $b = $a->results[0];
  // print_r($d);
  $r['lat'] = $d['north'];
  $r['lng'] = $d['east'];
 if($r['lat'] == ""){
  return false;
 }else{
  return  $r; 
 }
    
}

function object_2_array($result)
{
    $array = array();
    foreach ($result as $key=>$value)
    {
        if (is_object($value))
        {
            $array[$key]=object_2_array($value);
        }
        if (is_array($value))
        {
            $array[$key]=object_2_array($value);
        }
        else
        {
            $array[$key]=$value;
        }
    }
    return $array;
}  

留言

楊建華寫道…
你好:

請問可以用一個簡單的範,例介紹一下怎麼用嗎? 3Q

可以的話,請寄到 meteor0721@gmail.com
chan寫道…
您好

後學我也需要一個簡單的範例介紹
學習怎麼用

如果可以也請mail一份給我
chanchinsung@gmail.com

謝謝您

這個網誌中的熱門文章

利用 google MAP API 取得座標之間的距離

JavaScript 將 Array 和 Object 轉成 JSON

讓 PHP 接收 post 的 json 資料