はじめに
今回はUnityで占いAPIを叩いて今日の運勢を取得してみる記事になります!
使わせていただくAPIはこちらです。
商用利用でなければ無料で扱うことができ、とても扱いやすかったです。
※念のため使う場合は自分で利用規約を要確認してください
ではさっそくやっていきましょう。
使い方
using System; using System.Net.Http; using System.Threading.Tasks; using UnityEngine; public class FortunetellingTest : MonoBehaviour { private static HttpClient _httpClient = new HttpClient(); private const string FORTUNE_TELLING_URL = "http://api.jugemkey.jp/api/horoscope/free/{0}/{1}/{2}"; private async Task Start() { DateTime presentTime = DateTime.Now; var year = presentTime.Year; var month = presentTime.Month; var day = presentTime.Day; var url = String.Format(FORTUNE_TELLING_URL, year, month, day); var result = await Task.Run(() => _httpClient.GetStringAsync(url)); Debug.Log("result: " + result); } }
リクエストを送るとこのようなJSON
でレスポンスが返ってきます。
{ "horoscope": { "2019/08/16": [ { "content": "運気は平行線です。マッサージやエステティックサロンに行って、気分を変えるのがオススメ。暴飲暴食にはご注意を。", "item": "バナナ", "money": 4, "total": 3, "job": 3, "color": "パープル", "day": 16, "love": 3, "rank": 7, "sign": "牡羊座" }, { "content": "上手に気分転換できれば、ミスなく過ごせそう。集中して作業に励んだら、好きなものに浸って良いエネルギーを補給して。", "item": "万年筆", "money": 3, "total": 2, "job": 2, "color": "グレー", "day": "", "love": 2, "rank": 10, "sign": "牡牛座" }, { "content": "前向きな気持ちで過ごせる日。やってみたいと思ったことはどんどんトライして。ちょっと難しいくらいが、良いバランスです。", "item": "ノートパソコン", "money": 3, "total": 3, "job": 3, "color": "ブルー", "day": "", "love": 3, "rank": 8, "sign": "双子座" }, { "content": "運気は好調!意中の人から嬉しい言葉をもらえそうです。日頃の努力が認められて、自分磨きのモチベーションもアップ。", "item": "ラジオ", "money": 5, "total": 5, "job": 5, "color": "ブラック", "day": "", "love": 5, "rank": 1, "sign": "蟹座" }, { "content": "身近な人の軽率な態度にショックを受けるかも。素直に話すと、かえって絆が深まりそうです。言いたいことは我慢しないで。", "item": "ホワイトボード", "money": 2, "total": 2, "job": 2, "color": "イエロー", "day": "", "love": 2, "rank": 11, "sign": "獅子座" }, { "content": "うまい話には落とし穴がありそうです。仲間の情報を鵜呑みにするのは危険かも。困った時には一人で判断しないように。", "item": "切手", "money": 4, "total": 4, "job": 4, "color": "オレンジ", "day": "", "love": 3, "rank": 5, "sign": "乙女座" }, { "content": "人に話していない悩み事があるなら、打ち明けるタイミング。味方が得られて、あっさりクリアできるかもしれません☆", "item": "ソーセージ", "money": 5, "total": 4, "job": 5, "color": "レッド", "day": "", "love": 4, "rank": 3, "sign": "天秤座" }, { "content": "今日は出費が多くなる予感。未来の自分に投資していると思って、ケチにならないように。夜は得意料理を作ってみて。", "item": "鉛筆削り", "money": 3, "total": 3, "job": 3, "color": "ピンク", "day": "", "love": 2, "rank": 9, "sign": "蠍座" }, { "content": "景色の良い場所へ出かけると、一緒にいる人との絆が深まりそう。言いたいことを思いきって言葉にすると良い運気が☆", "item": "マジックテープ", "money": 5, "total": 4, "job": 4, "color": "シルバー", "day": "", "love": 4, "rank": 4, "sign": "射手座" }, { "content": "しばらくご無沙汰している人には、ぜひメールを送って。あなたを支えてくれる、素晴らしい縁を実感して、安心できそう☆", "item": "野菜スティック", "money": 5, "total": 5, "job": 5, "color": "ホワイト", "day": "", "love": 4, "rank": 2, "sign": "山羊座" }, { "content": "緊急時の持ち物をチェックするなど、防災の意識を高めると吉。今のうちに電池や非常食を買っておけば、不安も解消されます。", "item": "リュックサック", "money": 2, "total": 1, "job": 2, "color": "ゴールド", "day": "", "love": 1, "rank": 12, "sign": "水瓶座" }, { "content": "今日の運気はまずまず。周りからの援助で、思いがけない得をすることが多い日。不安要素も、今日でクリアできそうです。", "item": "ペットボトルのお茶", "money": 4, "total": 3, "job": 4, "color": "グリーン", "day": "", "love": 3, "rank": 6, "sign": "魚座" } ] } }
今日の占いの取得について
Json
ということはJsonUtility
を使うことがまず考えられますが、Json
のkey
に今日の日付が使われているのが結構厄介でした。
というもの、JsonUtility
ではあらかじめJson
に対応したクラスを定義しておかなければならないからです。
これの対処法として私は正規表現を用いました。
もしそれ以外でなにか良い方法があれば教えていただけると嬉しいです。