【问题标题】:Parsing Json from a document body从文档正文中解析 Json
【发布时间】:2013-10-12 03:16:04
【问题描述】:

我需要把这个页面的正文变成一个对象:

http://sob.ca.flyerservices.com/cached_banner_pages/AJAXProxy.aspx?bname=SOB&AJAXCall=GetPublicationData.aspx?view=PRODUCT&queryid=fc02e54c-079a-4623-8187-8b15d08da139&publicationid=1a9b1abe-0534-436a-83ab-8062e4801630&type=CATEGORY&languageid=1&bannerid=0f69e65d-a96e-4871-8f86-a5fe7dde96c0&bannername=SOB&customername=SOB&publicationtype=1

到目前为止,我有(我会省去你之前的 100 次尝试,这是最有希望的):

//getting body
var json = document.body.innerHTML;
json = json.replace(/(<([^>]+)>)/ig," "); //get rid of html tags

控制台中的输出看起来不错,但是当我尝试 eval 或 parseJSON 时,它会引发 Unexpected Token 错误...有什么让我开始的想法吗?

谢谢!

编辑:获取 JSON 可能很复杂(请参阅 cmets/answers),那么我最好的做法是什么? 我的想法:

split by ({"productid": )
then split by (",")

我不能单独使用逗号作为分隔符,因为描述字段包含一些...

【问题讨论】:

  • 也许你的 json 源代码有一些无效字符。你可以在这里验证它:jsonformatter.curiousconcept.com
  • 我只是在尝试,它抱怨包含\'的字符串
  • 是的,我也在尝试。用replace('\\\'','\'')整理出来后,又抱怨了一些……

标签: javascript html json html-parsing


【解决方案1】:

即使您要删除所有有问题的字符,您仍然无法将其解析为无效字符。看到这一行

"description": " or 8" Lemon Meringue Pie,

【讨论】:

  • 是的......所以,用 \d\'\' 替换 \d\" 的正则表达式?手指交叉^^
  • 任何其他想法如何获取数据?基本上,不管是不是 JSON,我都需要一个包含所有产品的对象。
  • 它应该适用于这种特殊情况,但我有大约 2000 页这样的页面要处理,我正在尝试考虑更全球化的东西。
猜你喜欢
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多