2023年のコンテストも終わり、2024年のコンテストも視野に入れつつ、次のゲームを作る準備を始めることにした。
まずは、2年前にうまくいかずに放置した、JSONフォーマットのデータ操作から。
この時は、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つでも配列として記述ができる。ま、当たり前。
これを見落としていて、直接配列内の要素を参照しようとしていた。
いくら正しいと思える命令の書き方をしても、取得できなかったのだった。