2023年のコンテストも終わり、2024年のコンテストも視野に入れつつ、次のゲームを作る準備を始めることにした。
まずは、2年前にうまくいかずに放置した、JSONフォーマットのデータ操作から。
coro3.hatenablog.jp
この時は、hspinet.asをincludeして、httpinfo命令で直接JSONフォーマットをゲットしてきたのがダメかと思っていたが、どうやら、ゲットしたJSONフォーマットの構造に合わせて適切なパース命令を使えてなかったようだ。
wttr.inでは、天気の情報をJSONフォーマットで取得できるパラメータがある。wttr.inのGitHubを見ると、ヘルプには載ってない、2つ目の短めにJSONを取得できるフォーマットを見つけた。
https://wttr.in/628?format=j2
このフォーマットなら、天気情報が、現時点のものだけになり、短くなる。こんな感じ。
{
"current_condition": [
{
"FeelsLikeC": "11",
"FeelsLikeF": "52",
"cloudcover": "25",
"humidity": "94",
"lang_ja": [
{
"value": "所により曇り"
}
],
"localObsDateTime": "2024-01-22 11:54 PM",
"observation_time": "02:54 PM",
"precipInches": "0.0",
"precipMM": "0.0",
"pressure": "1008",
"pressureInches": "30",
"temp_C": "11",
"temp_F": "52",
"uvIndex": "1",
"visibility": "10",
"visibilityMiles": "6",
"weatherCode": "116",
"weatherDesc": [
{
"value": "Partly cloudy"
}
],
"weatherIconUrl": [
{
"value": ""
}
],
"winddir16Point": "SSE",
"winddirDegree": "160",
"windspeedKmph": "17",
"windspeedMiles": "11"
}
],
"nearest_area": [
{
"areaName": [
{
"value": "Kawaguchi"
}
],
"country": [
{
"value": "Japan"
}
],
"latitude": "35.805",
"longitude": "139.711",
"population": "468565",
"region": [
{
"value": "Saitama"
}
],
"weatherUrl": [
{
"value": ""
}
]
}
],
"request": [
{
"query": "Lat 35.75 and Lon 139.70",
"type": "LatLon"
}
],
"weather": [
{
"astronomy": [
{
"moon_illumination": "86",
"moon_phase": "Waxing Gibbous",
"moonrise": "01:28 PM",
"moonset": "03:59 AM",
"sunrise": "06:48 AM",
"sunset": "04:57 PM"
}
],
"avgtempC": "9",
"avgtempF": "49",
"date": "2024-01-22",
"maxtempC": "11",
"maxtempF": "51",
"mintempC": "8",
"mintempF": "46",
"sunHour": "7.5",
"totalSnow_cm": "0.0",
"uvIndex": "2"
},
{
"astronomy": [
{
"moon_illumination": "93",
"moon_phase": "Waxing Gibbous",
"moonrise": "02:20 PM",
"moonset": "05:00 AM",
"sunrise": "06:48 AM",
"sunset": "04:58 PM"
}
],
"avgtempC": "8",
"avgtempF": "46",
"date": "2024-01-23",
"maxtempC": "10",
"maxtempF": "50",
"mintempC": "4",
"mintempF": "39",
"sunHour": "9.3",
"totalSnow_cm": "0.0",
"uvIndex": "2"
},
{
"astronomy": [
{
"moon_illumination": "97",
"moon_phase": "Waxing Gibbous",
"moonrise": "03:19 PM",
"moonset": "05:54 AM",
"sunrise": "06:47 AM",
"sunset": "04:59 PM"
}
],
"avgtempC": "5",
"avgtempF": "41",
"date": "2024-01-24",
"maxtempC": "7",
"maxtempF": "44",
"mintempC": "3",
"mintempF": "38",
"sunHour": "9.8",
"totalSnow_cm": "0.0",
"uvIndex": "2"
}
]
}
落とし穴は、配列表記だった。
[…]は、配列の表記になるんだけど、要素が1つでも配列として記述ができる。ま、当たり前。
これを見落としていて、直接配列内の要素を参照しようとしていた。
いくら正しいと思える命令の書き方をしても、取得できなかったのだった。
HSPのJSON関連の命令は、配列形式のJSONを直接HSPの配列にしたり、添え字を使って参照ができないのだ。
続く。