【问题标题】:How to decode JSON by using JSONObject.cs?如何使用 JSONObject.cs 解码 JSON?
【发布时间】:2013-10-13 23:47:53
【问题描述】:

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

【问题讨论】:

  • 附带说明,根据我的试验,JSONObject 不能与 Javascript 一起使用,即使您将其正确地放在插件文件夹中。

标签: unity3d jsonobject


【解决方案1】:

为此工作了 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);

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的回答。构造函数有一个使用字符串作为参数的函数......所以最后我最终从 Unity Assets 存储中删除了 JSONObject 资产,并构造了另一个 jsonparse.. 无论如何谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-04-10
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多