Javascript 在c#(Unity)中解析JSON文件
我正在尝试将我从JS应用程序创建的JSON文件解析为Unity,使用C# 我没有Json或读取数据的经验,所以我肯定我缺少一些基本的东西 以下是JS中数据结构的外观:Javascript 在c#(Unity)中解析JSON文件,javascript,c#,json,unity3d,Javascript,C#,Json,Unity3d,我正在尝试将我从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 = "defa
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包含一个In数组和一个out数组
一旦存储在JSON中,它看起来像这样(例如,NodeDB中有3个节点)
然后,在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(jsonData)代码>
但显然,事情并没有那么简单
任何帮助都将不胜感激:o将对象的所有成员变量公开
。JSONUtility不会(反)序列化私有成员变量。
看
或者,如果您确实希望您的成员变量是私有的,请将[SerializeField]
属性添加到您希望序列化的每个字段。您可以将它们添加到项目中,并在顶部脚本中使用,
我使用这个脚本进行解析和其他
var N = JSON.Parse(the_JSON_string);
var versionString = N[0]["id"].Value;
var versionString = N[0]["posX"].Value;
和其他……我已经公开了我所有的类和节点数据库,但仍有一些地方出了问题。这是我想要放置数据的地方:public DialNode[]NodesDB但是当我使用命令NodesDB=JsonUtility.FromJson(nodesData)时代码>我得到一个错误“无法隐式地将类型DialNode转换为DialNode[]”我不知道如何处理数组,但我甚至不确定我是否正确使用FromJson语法。我可以使用NodesDB=JsonUtility.FromJson(nodesData)来解决这个错误代码>但是,我得到:“ArgumentException:JSON必须表示对象类型。”我想您需要另一个类来包装节点数组,JSON不应该以数组作为根开始,而是应该如下所示:{“NodeDB”:[{…},{…},等等]}
。那有用吗?有用!我一直在读Unity的解析器不支持json文件根的数组。我想一旦数据被提取出来,我就可以摆脱这个“容器”,然后我们就开始了=)我已经创建了一个更简单的脚本版本,没有数组数组和所有噪音。在这种情况下,FromJson工作得很好。我认为问题在于我的Json不包含类,而是包含所述类的数组。不过,我还没有找到解决办法。我正在调查:
var N = JSON.Parse(the_JSON_string);
var versionString = N[0]["id"].Value;
var versionString = N[0]["posX"].Value;