javascript - 在 C# 中解析 JSON 文件 (Unity)

标签 javascript c# json unity-game-engine

我正在尝试将我从 JS 应用程序创建的 JSON 文件解析到 Unity 中(用 C# 编写)。

我没有使用 Json 或读取一般数据的经验,所以我确信我错过了一些基本的东西。

这是 JS 中的数据结构:

function DialIn () {
    this.id = null; this.line = "default in line"; this.links = [];
}

function DialOut () {
    this.id = null; this.line = "defauLt out line"; this.links = []; this.autoDelete = false;
}

function DialNode () {
    this.id = null; this.posX = null; this.posY = null; this.ins = []; this.outs = [];
}
            
var NodesDB = []; //DataBase of dial nodes

简单来说,NodesDB 是一个 DialNode 数组,每个 DialNode 包含一个 ins 数组和一个 outs 数组。

一旦存储在 JSON 中,它看起来像这样(例如,NodesDB 中有 3 个节点)

[{"id":"dn0","posX":82,"posY":234,"ins":[{"id":"dn0_in_0","line":"This is dynamic Blep ?","links":[]}],"outs":[{"id":"dn0_out_0","line":"Coucou, this is a reply.","links":["dn1_in_0"],"autoDelete":false}]},{"id":"dn1","posX":520,"posY":171,"ins":[{"id":"dn1_in_0","line":"This is dynamic Blep ?","links":["dn0_out_0"]}],"outs":[{"id":"dn1_out_0","line":"Coucou, this is a reply.","links":[],"autoDelete":false},{"id":"dn1_out_1","line":"Coucou, this is a reply.","links":["dn2_in_0"],"autoDelete":false}]},{"id":"dn2","posX":948,"posY":139,"ins":[{"id":"dn2_in_0","line":"This is dynamic Blep ?","links":["dn1_out_1"]}],"outs":[{"id":"dn2_out_0","line":"Coucou, this is a reply.","links":[],"autoDelete":false}]}]

然后,在 Unity 中,我创建了这个结构,试图模仿 JS 中的结构:

    [System.Serializable]
    class DialIn
    {
        string id; string line; string[] links;
    }


    [System.Serializable]
    class DialOut
    {
        string id; string line; string[] links; bool autoDelete;
    }


    [System.Serializable]
    class DialNode
    {
        string id; int posX, posY; DialIn[] ins; DialOut[] outs;
    }

    DialNode[] NodesDB;

从那里,我使用这些命令:

path = Application.dataPath + "/Jsons/Bloup.json";
jsonData = File.ReadAllText(path);

我相信我应该使用这样的东西: NodesDB = JsonUtility.FromJson<DialNode>(jsonData);

但显然,事情没那么简单。

任何帮助将不胜感激:o

最佳答案

将对象的所有成员变量设为公共(public)。 JSONUtility 不会(反)序列化私有(private)成员变量。
请参阅documentation .

或者,如果您确实希望成员变量私有(private),请将 [SerializeField] 属性添加到要序列化的每个字段。

关于javascript - 在 C# 中解析 JSON 文件 (Unity),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64412671/

相关文章:

javascript - 在选择器中连接

javascript - 如何将网站连接到 WCF 服务

c# - Windows 服务无法从 App.config 读取参数

python - 如何获取http请求python中的所有结果

php - 解析 JSON 以在 PHP 中创建 SQL 插入语句

java - 如何在 Java 中发布 JSON 字符串

javascript - 简单的 onclick 事件只工作一次

javascript - 如何使用 Prototype 在两个 DIV 之间创建分隔符

c# - 如何使用CommandParameter发送列表

C# Form_Load 事件方法