iT邦幫忙

2024 iThome 鐵人賽

DAY 28
1
佛心分享-SideProject30

未來IT將來系列 第 28

未來IT將來2024.28「OpenData+JSON」實作

  • 分享至 

  • xImage
  •  

一、引言

在數據驅動的時代,開放數據(OpenData)成為各行各業推動創新和改善服務的重要資源。政府、企業及各類機構紛紛將資料公開,讓開發者能夠自由訪問和使用這些數據,從而創造出新的應用和服務。JSON(JavaScript Object Notation)作為一種輕量級的資料交換格式,因其簡單易懂和跨平台的特性,成為OpenData的主要格式之一。本文將探討如何在應用開發中實作OpenData與JSON的結合,並介紹相關技術和實作方法。

二、OpenData與JSON概述

  1. OpenData的意義
    OpenData指的是任何人都可以自由訪問、使用、修改及分享的數據。這些數據通常由政府機構、公共部門或企業提供,涵蓋交通、天氣、醫療、環保等各個領域。OpenData的公開為開發者提供了豐富的數據資源,可以用於分析、創建應用程式以及改進社會服務。
  2. JSON格式的優勢
    JSON是一種輕量級的資料交換格式,使用文本來描述資料結構,這使得JSON非常易於理解和操作。JSON格式被廣泛應用於網頁開發、API數據傳輸以及各類應用的數據交換。其跨平台的特性使得JSON能夠在多種程式語言中被輕鬆解析和生成。
    json程式碼
{
  "name": "Taipei",
  "population": 2600000,
  "area": 271.8,
  "coordinates": {
    "latitude": 25.033,
    "longitude": 121.5654
  }
}

三、OpenData+JSON的實作步驟

  1. 選擇適當的OpenData資源
    首先需要選擇適合應用需求的OpenData資源。這些資源通常以API的形式提供,開發者可以通過HTTP請求獲取JSON格式的數據。常見的OpenData來源包括:
    • 政府開放資料平台:如台灣的政府資料開放平台(data.gov.tw),提供多種公共數據集。
    • 國際組織:如世界銀行、聯合國等國際組織提供的全球數據。
    • 社會數據庫:如Google公共數據、Kaggle數據集等。
  2. 獲取和解析JSON數據
    獲取OpenData的過程通常通過HTTP GET請求來完成,伺服器返回的數據通常為JSON格式。這些數據可以直接在應用中進行解析和處理。
    範例:使用Python獲取OpenData
    python程式碼
import requests

url = "https://data.taipei/api/getDatasetInfo/downloadResource?id=1f65d0a2-3559-4f6f-b1cf-0fe15f2c99b0&rid=55702091"
response = requests.get(url)
data = response.json()

# 解析並打印數據
for item in data['result']['results']:
    print(item['stitle'], item['longitude'], item['latitude'])
    ```
3. JSON數據處理與展示
獲取數據後,開發者可以根據應用的需求對數據進行處理和展示。這包括過濾、排序、計算以及將數據可視化。
範例:將JSON數據可視化
        const ctx = document.getElementById('myChart').getContext('2d');
        const myChart = new Chart(ctx, {
            type: 'bar',
            data: {
                labels: labels,
                datasets: [{
                    label: 'Longitude',
                    data: values,
                    backgroundColor: 'rgba(54, 162, 235, 0.2)',
                    borderColor: 'rgba(54, 162, 235, 1)',
                    borderWidth: 1
                }]
            },
            options: {
                scales: {
                    y: {
                        beginAtZero: true
                    }
                }
            }
        });
    });
</script>

附件.以B4A(Basic4Android)實作「OpenData+JSON」範例的程式碼

展示如何從開放數據 (OpenData) API 獲取 JSON 格式的數據並解析。

  1. 設置網路權限
    首先,你需要在 AndroidManifest.xml 中添加網路權限,因為我們需要透過網路從 API 取得資料:
<uses-permission android:name="android.permission.INTERNET"/>
  1. 範例程式碼
    這個範例會從一個假設的 OpenData API 獲取 JSON 數據,並將結果顯示在 ListView 中。

Main Activity (Main.b4a)

Sub Process_Globals
    Private hc As HttpJob
End Sub

Sub Globals
    Private ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Main")
    
    ' 初始化 ListView
    ListView1.Initialize("ListView1")
    Activity.AddView(ListView1, 0, 0, 100%x, 100%y)
    
    ' 發送 HTTP 請求以獲取 OpenData
    hc.Initialize("job1", Me)
    hc.Download("https://example.com/api/data") '替換為您的OpenData API網址
End Sub

Sub JobDone (Job As HttpJob)
    If Job.Success Then
        ' 將獲得的 JSON 數據轉換為字串
        Dim result As String = Job.GetString
        Log(result)
        
        ' 解析 JSON 數據
        Dim parser As JSONParser
        parser.Initialize(result)
        Dim root As List = parser.NextArray
        
        For Each item As Map In root
            Dim name As String = item.Get("name")
            Dim value As String = item.Get("value")
            
            ' 將數據顯示到 ListView
            ListView1.AddSingleLine("Name: " & name & ", Value: " & value)
        Next
    Else
        Log("Error: " & Job.ErrorMessage)
    End If
    Job.Release
End Sub
  1. JSON 格式範例
    假設 OpenData API 回傳的 JSON 格式為以下樣式:
[
    {"name": "項目1", "value": "數值1"},
    {"name": "項目2", "value": "數值2"},
    {"name": "項目3", "value": "數值3"}
]
  1. 解釋
    HttpJob:使用 HttpJob 來進行 HTTP 請求,從 API 獲取數據。
    JSONParser:解析從 API 獲取的 JSON 並將其轉換為 B4A 可用的資料結構。
    ListView:將解析後的資料顯示在 ListView 中,讓使用者能夠看到每個項目的 name 和 value。

以上B4A 程式碼範例,可依據實際的 OpenData API 修改網址和資料結構。

參考網址
• B4X 官方網站: https://www.b4x.com
• 台灣政府資料開放平台(https://data.gov.tw/)
• Chart.js 官方網站(https://www.chartjs.org/)
• Python Requests 官方文檔(https://requests.readthedocs.io/en/latest/)


上一篇
未來IT將來2024.27「App內建關聯式資料庫管理系統」實作
下一篇
未來IT將來2024.29「B4X由雲到端」Web3.0實作 - 以Pleroma為例
系列文
未來IT將來31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言