こんにちは、上津原です。
前回はHTTP通信をしましたが、今回は同時によく使うであろうJsonのパースです。
Jsonのパースも、実はBluePrintで実装することができず、C++で実装する必要がありました。 なので再びAnswerHubを漁り、なんとか動いたので記事にしておきます。
今回はローカルにあるJsonファイル
前回HTTP通信をしましたが、今回はローカルです。なのでローカルからデータを読み出すコードも合わせて公開します。
読み込んでいるJsonファイルは以下です。
ちょっとした解説
Jsonはパースという名前ではなくて、シリアライズ、デシリアライズという名前で管理されています。
- シリアライズ:JsonObjectからテキストへ
- デシリアライズ:テキストからJsonObjectへ
という感じです。今回はテキストからJsonObjectへ変換するのでデシリアイズを行っています。
まだ不明なポイントとしては、
TArray<TSharedPtr
の部分です。
Arrayのオブジェクトを取得するのに無名のArrayを利用しようとしたのですが、いまいちやり方がわからず連想配列で名前を付けてやると取得ができました。
注意点
パッケージ化したときにSavedディレクトリ内には、置いておいたJsonファイルはなくなってしまってました。きちんと永続化したい場合は別の手段をとった方がよさそうです。今回はその必要がなかったのでそこまで調べていませ。
HTTP通信と組み合わせれば、API取得・パースができる!
前回のHTTP通信と組み合わせればよくあるAPI問い合わせができるようになると思います。
ここからBluePrintに利用したければ、Arrayに入れて、UPROPERTYしてやれば活用ができます。