2

我是 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 类?任何想法将不胜感激!

4

2 回答 2

2

经过2个小时的工作……我发现了问题。

因此,JSONObject 的 C# 类有一个带有可选参数的构造函数(你和我都在使用)。因此,从我的尝试中我了解到,除非您发送可选项,否则从 Javascript 调用它是行不通的。

我通过提供来自 JS 的调用的默认值使其工作。

这是构造函数:

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);

这样你就不会使用默认值并且它可以工作(我知道很灵活,但我没有时间做更多的工作......所以如果有人遇到同样的问题,这里是解决方案)

于 2014-07-29T21:32:24.387 回答
0

你能提供更多信息吗?您的错误说您不能只将字符串作为参数添加到构造函数。也许您可以构造 JSonObject,然后找到解码 Json 字符串的相关方法?

于 2013-10-16T15:06:08.600 回答