【发布时间】:2013-05-28 19:57:29
【问题描述】:
我正在尝试构建一个使用为 JavaScript 设计的 API 的应用程序。它不是发送 JSON 或 XML,而是发送一个带有 JavaScript 对象的 Script 标签,如下所示:
<script>
var apiresult = {
success: true,
data: {
userName: "xxxxx",
jsonData: {
"id" : "8342859",
"price" : "83.94"
}
}
};
</script>
我试图只取出“jsonData”属性。在浏览器领域,你可以去:
apiresult.data.jsonData;
显然我不能在 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);
如果我在监视窗口中展开“r.Results”,它会显示变量值,但我如何才能只取出原始 JSON,以便将其解析到我的对象中?
【问题讨论】: