两个问题:
1、这是使用 JSONP 方式获取的 JSON,开头通常会多出一个 JsonCallback 之类的参数,这里的是 jdSearchResultBkCbA。
这种格式的不能直接解析,需要把首尾两个括号之外的去掉。
2、其中有一行是
"warename": "创维(Skyworth)50\x2F55寸 G2A系 4K超高清 HDR 人工智能 智能网络平板电视机 55G2A",
这里的反斜杠会被误以为是转义字符,从而引发报错,所以去掉或者替换成正斜杠什么的都可以。
let
源 = Text.FromBinary(Web.Contents("https://so.m.jd.com/ware/search._m2wq_list?keyword=%E5%88%9B%E7%BB%B455G3&datatype=1&callback=jdSearchResultBkCbA&page=2&pagesize=10&ext_attr=no&brand_col=no&price_col=no&color_col=no&size_col=no&ext_attr_sort=no&merge_sku=yes&multi_suppliers=yes&area_ids=1,72,2819&filt_type=redisstore,1;&sort_type=sort_totalsales15_desc&qp_disable=no&fdesc=%E5%8C%97%E4%BA%AC&t1=1538897256595")),
去掉首位 = Text.Trim(Text.Replace(源,"jdSearchResultBkCbA(",""),{"#(lf)",")"}),
替换斜杠 = Text.Replace(去掉首位,"\","/"),
解析 = Json.Document(替换斜杠)
in
解析