我是JSON的新手,并使用Unity Assets Store中的JSONObject.cs来解码JSON文件。我将JSONObject.cs放在Standard Assets文件夹中,example.js位于Scripts文件夹中。当我在Unity中测试这个例子时(在javascripts中):
var encodedString: String = "{\"field1\": 0.5,\"field2\": \"sampletext\",\"field3\": [1,2,3]}";
var j: JSONObject = new JSONObject(encodedString);
它有一个编译器错误,据说:
BCE0024: The type 'JSONObject' does not have a visible constructor that matches the argument list '(String)'.
我是否需要再次在示例文件中声明JSONObject类?任何想法将非常感谢!
答案 0 :(得分:2)
工作2小时后...我发现了问题。
因此,JSONObject的C#类有一个带有可选参数的构造函数(你和我正在使用它)。因此我从我的尝试中了解到,除非您发送选项,否则从Javascript调用它将无效。
我通过从JS调用默认值来使其工作。
这是Contructor:
public JSONObject(string str, int maxDepth = -2, bool storeExcessLevels = false, bool strict = false) {
Parse(str, maxDepth, storeExcessLevels, strict);
}
而不是像这样从JS调用:
var obj: JSONObject = new JSONObject("{json here}");
调用它发送构造函数具有的相同默认值:
var obj: JSONObject = new JSONObject("{json here}", -2, false, false);
通过这种方式你不会使用默认值并且它有效(我知道很有效,但我没有时间做更多的工作......所以这里有解决方案,如果有人得到同样的问题)
答案 1 :(得分:0)
您能提供更多信息吗? 你所犯的错误说你不能只是将字符串作为参数添加到构造函数中。也许你可以构造JSonObject,然后找到解码Json字符串的相关方法?