Проблема сериализации и десериализации данных [Firebase] – C# UnityC#

Место общения программистов C#
Ответить
Anonymous
 Проблема сериализации и десериализации данных [Firebase] – C# Unity

Сообщение Anonymous »

Я пытаюсь десериализовать тот же объект, который я сериализовал, в базу данных Firebase Realtime, но у меня возникла проблема с его работой. Вот разбивка классов/скриптов:

Код: Выделить всё

[Serializable]
public class PuzzleSphereTarget
{
public Nullable x;
public Nullable y;
public Nullable z;

public PuzzleSphereTarget()
{
this.x = null;
this.y = null;
this.z = null;
}
public PuzzleSphereTarget(float xParam, float yParam, float zParam)
{
this.x = xParam;
this.y = yParam;
this.z = zParam;
}

public string ToJson()
{
return JsonUtility.ToJson(this);
}

}
А также класс-оболочка PuzzleSphereInformation:

Код: Выделить всё

[Serializable]
public class PuzzleSphereInformation
{
public string creatorName { get; set; }
public List
 puzzleSphereTarget { get; set; }

public PuzzleSphereInformation()
{
this.creatorName = null;
this.puzzleSphereTarget = new List();
}
public PuzzleSphereInformation(string creatorName, List puzzleSphereTarget)
{
this.creatorName = creatorName;
this.puzzleSphereTarget = puzzleSphereTarget;
}

public string ToJson()
{
return JsonUtility.ToJson(this);
}

}
Как я экономлю:

Код: Выделить всё

//
fun SavePuzzleToFirebase() {
PuzzleSphereInformation puzzleInfo = new PuzzleSphereInformation(creatorName, puzzleTargets);
string jsonData = JsonConvert.SerializeObject(puzzleInfo);
firebaseManager.AddPlayerCreatedPuzzle(JsonConvert.SerializeObject(targetData));
}
Объект в fireBase:

Код: Выделить всё

{"creatorName":"test user","puzzleSphereTarget":[{"x":-0.2674436,"y":0.009597826,"z":0.894937754},{"x":0.2539144,"y":0.00647806656,"z":0.8653086}]}
Но когда я пытаюсь десериализовать тот же объект, он оказывается пустым, и я не знаю почему (это правильный уровень базы данных Firebase для получения данных):
р>

Код: Выделить всё

_databaseReference.GetValueAsync().ContinueWithOnMainThread(task =>
{
if (task.IsCompleted)
{
DataSnapshot snapshot = task.Result;
if (snapshot.Value != null)
{
foreach (DataSnapshot targetSnapshot in snapshot.Children)
{
string targetSnapshotJson = targetSnapshot.GetRawJsonValue();
// Debug.Log(targetSnapshotJson);
foreach (DataSnapshot targetInfo in targetSnapshot.Children)
{
string puzzleDataJson = targetInfo.GetRawJsonValue();
PuzzleSphereInformation puzzleInformation = JsonConvert.DeserializeObject
(puzzleDataJson);
Debug.Log("targets " + puzzleInformation.creatorName); // nothing
}
}
}
}
});
Что я делаю не так в данном случае? Я пытаюсь десериализовать тот же объект, который я сериализовал, но безуспешно. Спасибо за любую помощь.
Я пробовал JsonUtility.FromJson, JsonConvert, но ни один из них не помог.

Подробнее здесь: https://stackoverflow.com/questions/788 ... harp-unity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»