facebook twitter hatena line email

「Unity/Firebase/Realtimedatabase/json」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(jsonで受け取る)
(jsonで受け取る)
行43: 行43:
 
</pre>
 
</pre>
 
参考:https://ntw-games.net/wp/develop/363/
 
参考:https://ntw-games.net/wp/develop/363/
 +
 +
==keyを複数含んだjsonを取得==
 +
JsonUtilityだと、Dictionaryのjsonが、取り込めないので、Newtonsoft.Json側を、使うと良い。
 +
<pre>
 +
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, Msg> x in dic)
 +
        {
 +
            Debug.Log(x.Key + ": " + x.Value.text);
 +
        }
 +
    }
 +
});
 +
</pre>
 +
User.cs
 +
<pre>
 +
public class User
 +
{
 +
    public string username;
 +
    public string email;
 +
    public User()
 +
    {
 +
    }
 +
    public User(string username, string email)
 +
    {
 +
        this.username = username;
 +
        this.email = email;
 +
    }
 +
}
 +
</pre>

2021年9月30日 (木) 00:55時点における版

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, Msg> 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;
    }
}