如何将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) 

设置上有一个断点,看看你在实际接收的类型。另外,如果断点没有命中,你有一个不同的问题。

+0

是的,我发现它!!!!! :)。我需要使用JSON.Stringify(arg2),然后从脚本传递给C#。好!!!那么我需要使用一些用于.NET的JSON库转换回对象:) :) – Omkar 2010-12-15 17:23:25

+0

JSON.NET或JavascriptSerializer – 2010-12-15 20:29:20