各位觀看文章的客官!最近武漢肺炎愈來愈嚴重,人心惶惶,但是生活還是要過,資訊技術還是要進步往前走,讓我們進入正題吧!其實現在很多政府資料或企業資料都會開有做開放式資料(OpenData),但業界會需要這些資料去加以做分析等,那我們就針對JSON的介接開始吧。

新增欄位資料

將以上資料轉為JSON資料,存成檔案【test.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{
"title": "西題牛排",
"splie": "中正店",
"food": "牛肉",
"importdate": "2019-12-01",
"importkg": 20,
"exportdate": "2020/01/21",
"exportkg": 10,
"amount": 5000,
"description": "公司設立於台北市中正區,"
},
{
"title": "西題牛排",
"splie": "萬華店",
"food": "雞肉",
"importdate": "2019-01-01",
"importkg": 100,
"exportdate": "2020/01/21",
"exportkg": 27,
"amount": 8000,
"description": "公司設立於台北市萬華區,"
},
{
"title": "西題牛排",
"splie": "板橋店",
"food": "牛肉",
"importdate": "2019-12-01",
"importkg": 20,
"exportdate": "2020/01/21",
"exportkg": 10,
"amount": 5000,
"description": "公司設立於新北市板橋區,"
},
{
"title": "西題牛排",
"splie": "中正店",
"food": "豬肉",
"importdate": "2019-11-21",
"importkg": 500,
"exportdate": "2020/12/31",
"exportkg": 211,
"amount": 2000,
"description": "公司設立於台北市中正區,"
},
{
"title": "西題牛排",
"splie": "斗六店",
"food": "牛肉",
"importdate": "2019-04-01",
"importkg": 20,
"exportdate": "2020/06/30",
"exportkg": 10,
"amount": 5000,
"description": "公司設立於台北市中正區,"
}

PHP如何做JSON分析?

在業界一定會有需要OpenData介接,但看工程師會用哪種語言去做,但在做介接之前,我們就一定要先去做JSON資料的分析處理,直接以簡單的範例跟大家說明

  1. 取得檔案內容,存入字串
    1
    $json_content = file_get_contents("test.json");

  1. 將JSON格式的字符串 進行編碼,當第二個參數為true值時,將轉換為陣列,而非object。 json_decode是將json資料轉成Array或是Object,(第二個參數是true)。
    1
    $Array = json_decode($json_content,true);

  1. 將陣列加以處理,每筆amount的值 加上500。第一層是每筆、第二層是每筆裡面的數據
    1
    2
    3
    4
    5
    6
    7
    foreach($Array as $key => $value){
    foreach($value as $key2 => $value2){
    if($key2 == "amount"){
    $Array[$key][$key2] = $Array[$key][$key2] + 500;
    }
    }
    }

  1. json_encode可以把PHP的陣例完美的轉換成json format。
    1
    $json = json_encode($Array);

將陣列轉JSON中文編碼的兩種方式

※json_encode是會把中文進行編碼處理,有些人其實不想呈現編碼後的樣子,想回復到原來的資料模樣,可以多加上array_walk_recursive函數加以處理

1
2
3
4
5
6
array_walk_recursive($Array, function(&$value, $key) {
if(is_string($value)) {
$value = urlencode($value);
}
});
$json = urldecode(json_encode($Array));

※這個方式是我另一個朋友介紹給我的,簡單明瞭

1
$json = json_encode($Array,JSON_UNESCAPED_UNICODE);

  1. 網頁呈現宣告以utf-8為編碼語系
    1
    header('Content-Type: application/json; charset=utf-8');

  1. 網頁印出JSON
    1
    echo $json;
標籤: w3HexSchool Json PHP