如何使用JSONObject.cs解码JSON?

时间:2013-10-13 23:47:53

标签: unity3d jsonobject

我是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类?任何想法将非常感谢!

2 个答案:

答案 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字符串的相关方法?