使用JavaScript从HTML <script>标记中提取JSON

时间:2016-01-30 17:10:05

标签: javascript json http parsing xmlhttprequest

网页在脚本标记内的html树中包含JSON。我需要提取该JSON对象并将其作为JSON对象进行操作。请告知我如何实现它。&#xA;我正在尝试这样做:

&#xA;&#xA;
  var url ='https:// indooroopillyshopping。 com.au/stores/'
var xhr = new XMLHttpRequest();&#xA; xhr.open('GET',url,false);&#xA; console.log(“发送请求到”, url);&#xA; // WAIT&#xA; xhr.send();&#xA; console.log(“接收来自”,url);&#xA;&#xA; var data = xhr.responseText ;&#xA; var json = data.match(/ \ [{“id”:“836”,“title”:“Acutherapy”。* / g); //我需要一个对象window.STORES = [{}]&#xA; var parsedJson = JSON.parse(stringJson); //捕获错误&#xA;  
&#xA;&# xA;

我也尝试过这样的方式:

&#xA;&#xA;
  var json = data.match(/ {“id”:“836”,“ title“:”Acutherapy“。* / g);&#xA; var newjson = json [0] .substring(0,json [0] .length-2); //删除末尾的空格和方括号&#xA ; var stringJson = JSON.stringify(newjson);&#xA; var parsedJson = JSON.parse(stringJson)&#xA; console.log(parsedJson [0] .id)//我无法使用点表示法访问JSON,因为它就像一个字符串(对象但不是[Object object])&#xA;  
&#xA;&#xA;

我只需将json字符串转换为json对象即可访问它的关键和价值观。

&#xA;

2 个答案:

答案 0 :(得分:0)

幸运的是,我自己找到了一个解决方案。我无法解析提取的json,因为它是';'在字符串的末尾,作为字符串提取为“[{}];”。我应该看起来像''[{}]'。也许对某人来说这些信息会很有用

var data = xhr.responseText;
var json = data.match(/\[{"id":"836","title":"Acutherapy".*/g);

var newjson = json[0].substring(0, json[0].length-1);
var parsedJson = JSON.parse(newjson)
console.log(parsedJson[1].id); //668

答案 1 :(得分:-1)

使用JSON.parse()(在大多数浏览器中都支持),就像这个例子一样简单:

var json = '{"key1":1,"key2":2}',
var parsedJson = JSON.parse(json);   
console.log(parsedJson.key1);
相关问题