我有一个网页,当按钮点击返回javascript对象时。
<input type="button" value="JSON Object" onclick="JSONObjectTest(user1)"
var user1 = { "name" : "myname", "title": "mytitle", "salary" : null};
在C#应用程序中,我正在使用Web浏览器加载此网页,其中包含上述代码。并在C#中实现了以下代码
this.webBrowser.ObjectForScripting = new JavascriptEventHandler();
DocumentCompleted中的此代码
var scriptBlock = webBrowser.Document.CreateElement("script");
var sb = new StringBuilder();
sb.Append("window.JSONObjectTest=function(param){window.external.JSONObjectEvent(param);}");
scriptBlock.SetAttribute("type", "text/javascript");
scriptBlock.SetAttribute("text", sb.ToString());
webBrowser.Document.Body.AppendChild(scriptBlock);
这是JavascriptEventHandler(ObjectForScripting)类
的代码 [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[ComVisible(true)]
public class JavascriptEventHandler
{
public void JSONObjectEvent(object param)
{
}
}
我能够完美地加载网页。当在网页上单击一个按钮时,我能够在C#中使用此方法 - JSONObjectEvent。
我的问题是,我想将javascript对象反序列化为c#类。我得到对象类型为System._COMObject。
如何反序列化?请帮忙。
使用Newtosnsoft.Json去除deserailize。
注意:我将只获取javascript对象而不是字符串。如果我从网页传递JSON.Stringify(user1),我可以反序列化它。但如果它是javascript对象我无法反序列化。