IronJS:如何将JSON(作为字符串参数发送)解析为JavaScript函数中的方法

时间:2012-11-01 13:14:00

标签: json ironjs

我是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未定义”

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

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

感谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

JSON.parse是Server上的一个未知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

不需要进行任何更改

干杯!