Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JInt或类似工具解释/解析c#中的Javascript变量_C#_Jint - Fatal编程技术网

使用JInt或类似工具解释/解析c#中的Javascript变量

使用JInt或类似工具解释/解析c#中的Javascript变量,c#,jint,C#,Jint,我正在尝试构建一个应用程序,该应用程序使用为JavaScript制作的API。它不发送JSON或XML,而是发送包含JavaScript对象的脚本标记,如下所示: <script> var apiresult = { success: true, data: { userName: "xxxxx", jsonData: { "id" : "8342859", "price" : "83.

我正在尝试构建一个应用程序,该应用程序使用为JavaScript制作的API。它不发送JSON或XML,而是发送包含JavaScript对象的脚本标记,如下所示:

<script>
var apiresult = {
    success: true,
    data: {
        userName: "xxxxx",
        jsonData: { 
            "id" : "8342859",
            "price" : "83.94"
            }
        }
    };
</script>
显然,我不能用C#做这件事。我尝试过使用Jint和HtmlAgilityPack,如下所示:

HtmlDocument = await client.GetHTMLAsync(url);

string scriptTag = htmlResult.DocumentNode.SelectNodes("//script").InnerHtml;

scriptTag += " return apiresult.data.jsonData;

JintEngine engine = new JintEngine();

Jint.Native.JsObject r = (Jint.Native.JsObject)engine.Run(scriptTag);
如果我在watch窗口中展开“r.Results”,它会显示变量值,但是如何才能将原始JSON返回,以便将其解析到我的对象中呢

最后我经常这样做。比JInt更容易使用。我的代码现在如下所示:

ScriptEngine engine = new ScriptEngine();

object result = engine.Evaluate(scriptString);

var json = Jurassic.Library.JSONObject.Stringify(engine, result);

我遇到了同样的问题,下面是我如何与Jint一起解决的

        var engine =new Engine();

        var html = 
                    @"<script>
                        var apiresult = {
                            success: true,
                            data: {
                                userName: ""xxxxx"",
                                jsonData: { 
                                    ""id"" : ""8342859"",
                                    ""price"" : ""83.94""
                                    }
                                }
                            };
                    </script>";


        var doc=new HtmlDocument();
        doc.LoadHtml(html);
        var script = doc.DocumentNode.SelectNodes("//script").First().InnerHtml;

        var result = engine
            .Execute(script)
            .Execute("var x=apiresult.data.jsonData;")
            .GetValue("x");

        var jsonData = engine.Json.Stringify(result, new[] { result });
var引擎=新引擎();
变量html=
@"
var apiresult={
成功:没错,
数据:{
用户名:“xxxxx”,
jsonData:{
“id”:“8342859”,
“价格”:“83.94”
}
}
};
";
var doc=新的HtmlDocument();
doc.LoadHtml(html);
var script=doc.DocumentNode.SelectNodes(“//script”).First().InnerHtml;
var结果=发动机
.Execute(脚本)
.Execute(“var x=apireult.data.jsonData;”)
.GetValue(“x”);
var jsonData=engine.Json.Stringify(result,new[]{result});
        var engine =new Engine();

        var html = 
                    @"<script>
                        var apiresult = {
                            success: true,
                            data: {
                                userName: ""xxxxx"",
                                jsonData: { 
                                    ""id"" : ""8342859"",
                                    ""price"" : ""83.94""
                                    }
                                }
                            };
                    </script>";


        var doc=new HtmlDocument();
        doc.LoadHtml(html);
        var script = doc.DocumentNode.SelectNodes("//script").First().InnerHtml;

        var result = engine
            .Execute(script)
            .Execute("var x=apiresult.data.jsonData;")
            .GetValue("x");

        var jsonData = engine.Json.Stringify(result, new[] { result });