【发布时间】:2018-12-07 18:15:21
【问题描述】:
首先。作为 JSON 新手,我深表歉意。我想我的无知使我很难提出一个准确的问题。不用担心,我会在清楚后编辑和清理这篇文章。
我有一些来自第 3 方网站的 html,其中包含我想要提取的 JSON 数据。我编写了将 JSON 数据序列化/反序列化为 C# 类的单元测试。但是,我的离线测试输入文件是通过手动复制粘贴操作生成的:我打开 *.html 源,找到 JSON 序列化数据字符串,然后复制粘贴到离线文件中。然后我用它作为我的单元测试的输入。效果很好。
我想自动执行此手动复制/粘贴操作。
目前,我使用的 URL 返回 HTML - JSON 数据隐藏在某处的 HtmlDocument 中 - 我没有最模糊的方法来确定直接 JSON 查询 url 可能是什么,或者如何发现它.最好知道如何获得它。
在解释完这些背景信息后,我现在将提出我的问题。
从概念上讲,我认为可能有两个问题要问。应该只有一个,但我的无知在于:我不确定哪个问题更好问,或者我在下面发布的两个问题是否在球场上。我希望您从概念的角度理解我的要求,并且在我达成一些理解后,我可以将其修改为更技术/更准确的观点。请多多包涵。
Q1:在使用第三方网站时,如何确定直接请求 JSON 对象的 GET 字符串应该是什么?
这似乎是理想的解决方案,但我不明白确定应该如何构造 GET 请求的过程。我几乎没有触及在 Firefox 中使用 Inspector 工具来调查 html 的皮毛。使用此工具查找 JSON 请求 URL 字符串(对于 GET)对我来说是个谜。
Q2:在与第三方网站合作时,如何浏览 Html 找到可以提取 JSON 字符串的节点?
这是一个备用问题。如果答案是“不,你不能直接确定JSON URL GET字符串”,备份就是遍历Html,定位到包含JSON数据字符串的元素。
html 示例:(为了适合本文的内容,被大量截断)
...lots of html, followed by:
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-6441790-1');
</script>
<script>
var result = {"teams":["tigers","sharks","destroyers","nerfs"]};
</script>
...lots more html, followed by EOF.
并且JSON数据封装在var result字符串中
【问题讨论】:
标签: javascript c# html json.net