如何将JSON格式数据接收到C#方法参数
问题描述:
我在.net应用程序中使用WebKit浏览器控件。我也是JSON的新手,对Java脚本知之甚少。我是从java脚本代码调用一个方法C#方法。我知道有WebKit控件的“ObjectForScripting”属性。如何将JSON格式数据接收到C#方法参数
C#代码: - 此代码在按钮点击之一时执行。它将java脚本注入到呈现的HTML页面中。
Element scriptElm = browser.Document.CreateElement("script");
scriptElm.AppendChild(browser.Document.CreateTextNode("Test(['ABC','EFG'],{'name':'First Name','surname':'LastName'})"));
NodeList headElm = browser.Document.GetElementsByTagName("head");
headElm[0].AppendChild(scriptElm);
上述代码从呈现的HTML页面调用以下Java脚本方法。
Java脚本代码:
function Test(arg1,arg2)
{
document.write(arg2.name); // Printing correct i.e. Firstname
document.write(arg2); // Bad!!!! always print [Object object]
window.external.TestMethod(arg1,arg2); // Call method in C# code.
}
C#方法签名
public bool TestMethod(string obj1, String obj2)
{
MessageBox.Show(obj1.ToString());
MessageBox.Show(obj2.ToString());
return true;
}
所以在上面的回调方法,我不能够正确i.e.obj2获得第二个参数。在C#中。我总是把它当作Object。我试图将其设置为对象,但没有工作。我应该如何将它转换为正确的格式?
感谢, Omky
答
试图改变你的方法签名:
public bool TestMethod(object obj1, object obj2)
设置上有一个断点,看看你在实际接收的类型。另外,如果断点没有命中,你有一个不同的问题。
是的,我发现它!!!!! :)。我需要使用JSON.Stringify(arg2),然后从脚本传递给C#。好!!!那么我需要使用一些用于.NET的JSON库转换回对象:) :) – Omkar 2010-12-15 17:23:25
JSON.NET或JavascriptSerializer – 2010-12-15 20:29:20