一部のデータをシリアル化するために C# (Unity3D の Mono 経由) を使用して JsonFx を使用していますが、「JsonTypeCoercionException: Only objects with default constructors can be deserialized. (Level[])」というデータを逆シリアル化しようとすると、エラーが発生します。
シリアル化されたクラスにデフォルトのコンストラクターを追加しようとしましたが、それでもエラーが発生します。Fwiw、私は同様のスレッドでさまざまな提案を試みました: http://forum.unity3d.com/threads/117256-C-deserialize-JSON-array
これが私のコードです:
//C#
using System;
using UnityEngine;
using System.Collections;
using JsonFx.Json;
using System.IO;
public class LoadLevel : MonoBehaviour {
string _levelFile = "levels.json";
Level[] _levels;
void Start () {
if (!File.Exists (_levelFile)){
// write an example entry so we have somethng to read
StreamWriter sw = File.CreateText(_levelFile);
Level firstLevel = new Level();
firstLevel.LevelName = "First Level";
firstLevel.Id = Guid.NewGuid().ToString();
sw.Write(JsonFx.Json.JsonWriter.Serialize(firstLevel));
sw.Close();
}
// Load our levels
if(File.Exists(_levelFile)){
StreamReader sr = File.OpenText(_levelFile);
_levels = JsonReader.Deserialize<Level[]>(sr.ReadToEnd());
}
}
}
そして、シリアル化するオブジェクトは次のとおりです。
using UnityEngine;
using System.Collections;
using System;
public class Level {
public string Id;
public string LevelName;
public Level() {}
}
何か案は?Level() コンストラクターを使用する場合と使用しない場合の両方を試しました。