facebook twitter hatena line email

Unity/Firebase/Realtimedatabase/json

提供: 初心者エンジニアの簡易メモ
2021年9月30日 (木) 00:55時点におけるAdmin (トーク | 投稿記録)による版 (keyを複数含んだjsonを取得)

移動: 案内検索

jsonをそのまま送信

User user = new User("taro", "taro@example");
string json = JsonUtility.ToJson(user);
string userId = "111";
FirebaseDatabase.DefaultInstance.GetReference("user").Child(userId)
.SetRawJsonValueAsync(json);

User.cs

public class User
{
    public string username;
    public string email;
    public User(string username, string email)
    {
        this.username = username;
        this.email = email;
    }
}

参考: https://firebase.google.com/docs/database/unity/save-data?hl=ja

jsonで受け取る

string userId = "111";
FirebaseDatabase.DefaultInstance.GetReference("user").Child(userId)
.GetValueAsync().ContinueWith(task =>
{
    if (task.IsFaulted)
    {
        Debug.LogError("not found users");
    }
    else if (task.IsCompleted)
    {
        DataSnapshot snapShot = task.Result;
        Debug.Log("json=" + snapShot.GetRawJsonValue()); // {"username":"taro", "email", "taro@example"}
    }
});

参考:https://ntw-games.net/wp/develop/363/

keyを複数含んだjsonを取得

JsonUtilityだと、Dictionaryのjsonが、取り込めないので、Newtonsoft.Json側を、使うと良い。

using Newtonsoft.Json;

FirebaseDatabase.DefaultInstance.GetReference("users")
.GetValueAsync().ContinueWith(task =>
{
    if (task.IsFaulted)
    {
        Debug.LogError("not found users");
    }
    else if (task.IsCompleted)
    {
        DataSnapshot snapShot = task.Result;
        string json = snapShot.GetRawJsonValue();
        Dictionary<string, User> dic = JsonConvert.DeserializeObject<Dictionary<string, User>>(json);
        foreach (KeyValuePair<string, User> x in dic)
        {
            Debug.Log(x.Key + ": " + x.Value.text);
        }
    }
});

User.cs

public class User
{
    public string username;
    public string email;
    public User()
    {
    }
    public User(string username, string email)
    {
        this.username = username;
        this.email = email;
    }
}