将Unity3D json转换为Javascript对象json格式

将Unity3D json转换为Javascript对象json格式,javascript,c#,json,unity3d,Javascript,C#,Json,Unity3d,我的整个工作流程: Unity3D(以json格式编码类数据)->WebGL构建->Javascript html->Socket.IO 这些数据类型(int,byte[],string)在socket.io中应该是可读的 这是我在Unity3D中使用的函数,用于将类转换为json字符串 ToJson() 当我在node.js中打印时,我得到了这个,它无法理解数据类型 {"Type":0,"Str":"AAA","Byte":[0]} 如果它是正确的,我将在node.js中打印时得到以下结果

我的整个工作流程:

Unity3D(以json格式编码类数据)->WebGL构建->Javascript html->Socket.IO 这些数据类型(int,byte[],string)在socket.io中应该是可读的

这是我在Unity3D中使用的函数,用于将类转换为json字符串

ToJson()

当我在node.js中打印时,我得到了这个,它无法理解数据类型

{"Type":0,"Str":"AAA","Byte":[0]}
如果它是正确的,我将在node.js中打印时得到以下结果

{ Type: 0, Str: 'AAA', Byte: [ 0 ] }
因此,我需要一个解决方案来转换它们。 有人能告诉我用C语言转换它们的最简单方法吗

更新:更多信息

下面的C#脚本在Unity3D中工作,我想将其转换为:

Application.ExternalEval(@"
    if(typeof window.socketIO !== 'undefined')
    {
        window.socketIO.emit('" + e + @"', " + data + @");
    }
");

因为“Application.ExternalEval”在最新的Unity中被折旧了,所以我需要将它们转换为如下内容:

mergeInto(LibraryManager.library, {
WebSocketEmitData: function (_e, _data) {
    var e = Pointer_stringify(_e);
    var data = Pointer_stringify(_data);
    if(typeof window.socketIO !== 'undefined')
    {
        window.socketIO.emit(e, data);
    }
}
});
谢谢

我在当前的项目中大量使用了Javascript/Unity/C,我强烈建议您使用它将生成一种通用的json格式,与Javascript-json类中的格式类似

用法与unity的原始json实用程序非常相似。
JsonUtility.ToJson
=>
JsonConvert.SerializeObject
JsonUtility.FromJson
=>
JsonConvert.DeserializeObject

也就是说,让我们将json字符串从C#对象转换为javascript对象

// Convert your json string to a native javascript object.
var jsObject = JSON.parse(str);
console.log(jsObject.Type); // outputs 0
console.log(jsObject.Byte.length); // outputs 1
console.log(jsObject.Str); // outputs AAA

// Convert your native javascript object to another of certain type, 
// will assume the desired javascript type is Player in a namespace Database
var player = Object.assign(new Database.Player(), jsObject);

另外,使用
if(typeof window.socketIO!=“undefined”)代替
if(typeof window.socketIO)
它更干净,检查空值和未定义值。

最后我自己找到了答案。我没有注意到我可以发出对象而不是字符串消息。现在它工作了

WebSocketEmitData: function (_e, _data) {
    var e = Pointer_stringify(_e);
    var data = Pointer_stringify(_data);
    var obj = JSON.parse(data);
    if(typeof window.socketIO !== 'undefined')
    {
        window.socketIO.emit(e, obj);
    }
}

您的“正确格式”不是有效的JSON,这是您从
JsonUtility.ToJson()中得到的是正确的。错误更可能是在JavaScript端处理JSON的方式中此
{“Type”:0,“Str”:“AAA”,“Byte”:[0]}
已经是正确的JSON格式了。。。这
{Type:0,Str:'AAA',Byte:[0]}
不是!JSON中的字段名总是包装在
中,我想我现在理解得更清楚了,只是编辑了我的问题。以前,我使用了“Application.ExternalEval()”解决方案,效果很好。当我尝试遵循新的Unity3D结构时,它不起作用……感谢您建议的工具。但是,我无法在我的项目中使用太多第三方插件。