在Unity中将List <vector3>序列化和反序列化为Json

时间:2018-04-16 03:31:14

标签: c# json unity3d unityscript

我有一个float vector List<Vector3> club3Dpts = new List<Vector3>();的列表,喜欢序列化到Json对象以存储在MySql中。

club3Dpts有漂浮矢量。

club3Dpts.Add (new Vector3 (1.25f, 1.335f, 1.425f));//chipping
club3Dpts.Add (new Vector3 (1.26f, 1.331f, 1.625f));//chipping
club3Dpts.Add (new Vector3 (1.232f, 1.135f, 1.125f));//chipping

我喜欢序列化为json,它实现为

//Serialize to Json
string json = JsonUtility.ToJson(club3Dpts);
Debug.Log("json " + json);

但是json没有数据,只在Debug中显示{}。

如何在Unity中序列化浮点矢量列表?

编辑: 我做了类似帖子中描述的相同的事情。

public static class JsonHelper
{
    public static T[] FromJson<T>(string json)
    {
        Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(json);
        return wrapper.Items;
    }

    public static string ToJson<T>(T[] array)
    {
        Wrapper<T> wrapper = new Wrapper<T>();
        wrapper.Items = array;
        return JsonUtility.ToJson(wrapper);
    }

    public static string ToJson<T>(T[] array, bool prettyPrint)
    {
        Wrapper<T> wrapper = new Wrapper<T>();
        wrapper.Items = array;
        return JsonUtility.ToJson(wrapper, prettyPrint);
    }

    [Serializable]
    private class Wrapper<T>
    {
        public T[] Items;
    }
}

然后序列化为Json

string json = JsonHelper.ToJson(club3Dpts.ToArray());
Debug.Log("json " + json);

json保存在MySql数据库中。

从MySql中检索json数据,

SqliteDatabase sqlDB = new SqliteDatabase (dbPath);
var result = sqlDB.ExecuteQuery("SELECT * FROM  Record  WHERE  ID = (SELECT MAX(ID) FROM Record)");
var row = result.Rows [0];
BLEBridge.club3Dpts = JsonHelper.FromJson(row ["Club3DPoints"].ToString());
BLEBridge.club3Dpts is List<Vector3> type.

我的错误为The type arguments for method JsonHelper.FromJson<T>(string) cannot be inferred from the usage. Try specifying the type arguments explicitly.

可能出现什么问题?

0 个答案:

没有答案