よりみちアプリ開発

Unityゲームアプリ開発、猫、映画、ゲーム、日々🍀

UnityでREST API通信 ③JSON形式のデータをオブジェクト化する

こんにちは!  

Unityで REST API通信 ② データベースの中身を取得する - よりみちアプリ開発  

の続きです。
   

JSON形式のデータをUnityで扱うには、JsonUtilityを使います。
JSONをオブジェクト化するために、JSONの値を格納する用のクラスを作って、カラムごとに変数定義します。
こちらのサイトがコピペで変換してくれておぉ便利!と思っていた矢先…

http://json2csharp.com/

4月17日でドメインが切れてました😭
 

一つ一つ書いていくの面倒だなぁと思っていたら、 エンジニアの夫がJavaScriptで変換するメソッドを作ってくれたので、 いずれどこかに公開できればいいなと思ってます。  

まずは、JSONのデータを格納するクラス

[System.Serializable]
public class HogeData
{
    public int id ;
    public string name ;
    .
    .
    .
}

 

以下は、前回のHogeControllerに追記していきます。

    //メンバ変数
    HogeData hoge;
    public void Start() { 
       //HogeDataクラスをインスタンス化する
       HogeData hogeData = new HogeData();
       .
       .
       .
    }
    if(request.responseCode == 200){
       .
       .
       .
       //JsonUtilityで、JSONをHogeDataクラスに格納
       hoge = JsonUtility.FromJson<HogeData>(jsonText);
    }

今回は以上です。
わかりづらい点がありましたらお気軽にきいてください。

次回に続きます。

Unityで REST API通信 ② データベースの中身を取得する

こんにちは!

UnityでREST API通信 ① GET通信をおこなう - よりみちアプリ開発

の続きです。
サーバとの通信ができたので、データベースの中身を取得します!
データベースの中身は、JSON形式で取ってくることになります。

前回のソースコードの、

 /*
ここに処理を書く
*/

の部分に追記していきます♪

 if(request.isNetworkError){
            Debug.Log(request.error);
        }else{
            //リクエストが成功した時
            if(request.responseCode == 200){

                //サーバーから受信したデータを、UTF8 ストリングとして取得
                string jsonText = request.downloadHandler.text;

               //JSONがunicodeで、仮名がエスケープされてしまうため、エスケープされた文字を変換
                jsonText = System.Text.RegularExpressions.Regex.Unescape(jsonText);
                Debug.Log(jsonText);
            }
        }

 

取得した結果が、コンソールにJSON形式で出力されます。

 

JSONの中身がエスケープされてしまうのは、なぜだかわからず少しハマってしまいました。

 
System.Text.RegularExpressions.Regex.Unescape() は、.NETのメソッドらしいです。
Regex.Unescape(String) メソッド (System.Text.RegularExpressions) | Microsoft Docs

 

②は以上です。
わかりづらい点がありましたらお気軽にきいてください^^

次回は、JSONの中身をオブジェクトに変換します。

UnityでREST API通信 ① GET通信をおこなう

今回は、UnityでAPI通信を行う製作メモです。
APIはLaravelで製作し、RESTfulな設計にしてます。

まずは、GET通信でデータベースのデータを取得し、ローカルに保存するところまでやっていきたいと思います。

Unityが提供してる通信APIは、 wwwUnityWebRequestです。

wwwは HTTPメソッドがGETとPOSTのみ。
UnityWebRequestは、+PUTDELETEも使えるとのことで、 wwwはシンプルにWebにアクセスするときに使うようです。

コードは以下のような感じです↓

using System.Collections;
using UnityEngine;
//これが必要になります
using UnityEngine.Networking;

public class HogeController : MonoBehaviour
{

  string webURL = "http://~";

  public void Start()
    {
        //通信はコルーチンを使って行います。
        StartCoroutine(GetData());       
    }

    IEnumerator GetData(){

        UnityWebRequest request = UnityWebRequest.Get(webURL);
        yield return request.SendWebRequest();

        //エラー処理
        if(request.isNetworkError){
            Debug.Log(request.error);
        }else{
            //リクエストが成功した時
            if(request.responseCode == 200){
                /*
               ここに処理を書く
               */
            }
        }
    }

サーバーとGETで通信させることができました。
①は以上です。
②では、データベースの中身をJSON形式で取得します。

わかりづらい点がありましたらお気軽にきいてください(^-^)

ブログ始めます。

はじめまして。

 

個人アプリ開発者をしております、えみのです。

 

技術系備忘録、開発日記をはじめ、にゃんこや趣味の映画、ゲームのことなど書きたいと思っております。

 

技術系の記事にかんしては、自分がネット上の色々な情報に助けられてきたので、少しでも初めてやる方の手助けになれればという思いです。

わかりやすくシンプルな記事を心がけたいと思います。

 

めんどくさがりなので今までブログをやろうと思い立っては三日坊主で終わってきたのですが、今回はとにかく続けることを目標に、無理せずゆるりと書いていきたいです٩( 'ω' )و

 

よろしくお願いします(*^-^*)