2

我是 IronJS 新手,在 JavaScript 方法中解析 JSON 时遇到困难。

我的 C# 代码

string jsonString = "{\"Name\": \"Ankur\", \"Sex\": \"Male\"}";
var o = new IronJS.Hosting.CSharp.Context();
o.ExecuteFile(@"C:\CustomScript.js");
var handleJson = o.Globals.GetT<FunctionObject>("HandleJson");
var result = handleJson.Call(o.Globals, jsonString).Unbox<string>();
Console.WriteLine(result);

CustomScript.js 中的 JavaScript 方法

function HandleJson(jsonStr) {
obj = JSON.parse(jsonStr);
return obj.Name;
}

每次我这样做时,我都会收到错误消息“ReferenceError: JSON is not defined”

猜猜,“JSON.parse”方法是浏览器原生的,在服务器端不可用。我可以使用 jQuery 方法obj = $.parseJSON(jsonStr); 也是,但不知道如何加载 jQuery 文件。

关于我做错了什么或如何解决它的任何想法?

谢谢。

4

1 回答 1

0

我找到了解决办法。

JSON.parse 是服务器上的未知 JS 方法(这就是我们收到错误的原因)......所以,我们需要在 CustomScript.js 文件之前添加/加载“json2.js”,然后我们就可以了。

json2.js 可以从以下位置下载:https ://github.com/douglascrockford/JSON-js

以下是我更新的代码。

更新的 C# 代码

        string jsonString = "{\"Name\": \"Ankur\", \"Sex\": \"Male\"}";
        var o = new IronJS.Hosting.CSharp.Context();
        o.ExecuteFile(@"C:\json2.js");
        o.ExecuteFile(@"C:\CustomScript.js");
        var handleJson = o.Globals.GetT<FunctionObject>("HandleJson");
        var result = handleJson.Call(o.Globals, jsonString).Unbox<string>();
        Console.WriteLine(result);

CustomScript.js 中不需要更改

干杯!

于 2012-11-01T16:22:28.823 回答