0

たとえば、私のjson文字列は次のようになります:

{
"v1" : [], 
"v2": 2, 
"v3": f()
}

これをデコードする必要があるコンテキストには定義がfありf()、そのコンテキストで正しい答えが得られます(デバッガーでチェック)。しかしJSON.parse(jsonstring)、私に与えますUnexpected tokenevalエラーも出ます。私は何をすべきか?

ここで例を見てください

4

3 に答える 3

2

うまくいかない理由

JSON の定義を見てください。関数呼び出しを含めることはできません。

考えられる回避策

1 つの方法は、このようなことを行い、呼び出したい関数の文字列を返すことです。

{
    "v1" : [], 
    "v2": 2, 
    "v3": "f"
}

アクセスする必要がある場合は、関数を呼び出すことができます。

var myJSON = JSON.parse(jsonstring);
var myFunctionResult = window[myJSON.v3]();  //works if global variable

他のオプションは、コードの動作方法を変更し、非同期スクリプト呼び出しを行うことです [jQuery は、 JSONP のようgetScriptに通常の JavaScriptcreateElement("script")で、コールバックを使用します。appendChild()

于 2012-07-13T13:54:20.450 に答える
0

JSON 文字列に関数を含めることはできません。

JSON は JavaScript オブジェクトから派生したものですが、JavaScript オブジェクトと同じではありません。結局のところ、それは文字列です。

于 2012-07-13T13:55:09.243 に答える
0

JSON でコールバックや関数呼び出しを使用しないでください (有効な JSON ではありません。安全ではなく、ばかげています。何らかの方法で機能させる場合、最後の 2 つのことです)。スクリプトでそれを行う方法は常にあります。

編集: JSON から関数を呼び出す必要はありません。「製図板」に戻って、このパターンを使用しないようにアプリを設計してください。

于 2012-07-13T13:55:24.343 に答える