2

私は JSON を初めて使用し、Unity Assets Store の JSONObject.cs を使用して JSON ファイルをデコードします。JSONObject.cs は Standard Assets フォルダーに配置し、example.js は Scripts フォルダーにあります。Unityで(javascriptで)例をテストしたとき:

  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 に答える