在數據驅動的時代,開放數據(OpenData)成為各行各業推動創新和改善服務的重要資源。政府、企業及各類機構紛紛將資料公開,讓開發者能夠自由訪問和使用這些數據,從而創造出新的應用和服務。JSON(JavaScript Object Notation)作為一種輕量級的資料交換格式,因其簡單易懂和跨平台的特性,成為OpenData的主要格式之一。本文將探討如何在應用開發中實作OpenData與JSON的結合,並介紹相關技術和實作方法。
{
"name": "Taipei",
"population": 2600000,
"area": 271.8,
"coordinates": {
"latitude": 25.033,
"longitude": 121.5654
}
}
三、OpenData+JSON的實作步驟
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>
展示如何從開放數據 (OpenData) API 獲取 JSON 格式的數據並解析。
<uses-permission android:name="android.permission.INTERNET"/>
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
[
{"name": "項目1", "value": "數值1"},
{"name": "項目2", "value": "數值2"},
{"name": "項目3", "value": "數值3"}
]
以上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/)