0

一部のデータをシリアル化するために 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() コンストラクターを使用する場合と使用しない場合の両方を試しました。

4

2 に答える 2

1

これが機能するには、JSONストリームに実際に配列が含まれている必要があると思います。Deserializeで配列を要求しているため、単一の要素にすることはできません。

于 2013-01-28T17:50:07.963 に答える