如何只获得json字符串

时间:2017-04-17 06:40:41

标签: json

<div class="body-layout" id="wide-wrapper">
<div id="wrap-all">some content will be there
    {"success":1,"message":"Data Success","data":[{"title":"RECRUITMENT IN NATIONAL INSURANCE COMPANY LIMITED (NICL)","disp":"RECRUITMENT OF 205, we hide [...]","link":"\/recruitment-national-insurance-company-limited-nicl-0"},{"title":"RECRUITMENT OF PO IN BANK OF BARODA (BOB)","disp":"RECRUITMENT OF 400, we hide [...]","link":"\/recruitment-po-bank-baroda-bob"},{"title":"SBI PO Prelims Admit Card 2017","disp":"SBI PO 2017 Admit Card for, we hide [...]","link":"\/sbi-po-prelims-admit-card-2017"}]}         
</div>

如何从上面的内容中只获取json字符串,是否有任何正则表达式可以过滤。

4 个答案:

答案 0 :(得分:1)

单线答案:

var elem = document.getElementById("wrap-all").innerHTML;

console.log(JSON.parse(elem.substring(elem.indexOf('{'), elem.lastIndexOf('}')+1)));
<div class="body-layout" id="wide-wrapper">
<div id="wrap-all">some content will be there
    {"success":1,"message":"Data Success","data":[{"title":"RECRUITMENT IN NATIONAL INSURANCE COMPANY LIMITED (NICL)","disp":"RECRUITMENT OF 205, we hide [...]","link":"\/recruitment-national-insurance-company-limited-nicl-0"},{"title":"RECRUITMENT OF PO IN BANK OF BARODA (BOB)","disp":"RECRUITMENT OF 400, we hide [...]","link":"\/recruitment-po-bank-baroda-bob"},{"title":"SBI PO Prelims Admit Card 2017","disp":"SBI PO 2017 Admit Card for, we hide [...]","link":"\/sbi-po-prelims-admit-card-2017"}]}  
</div>

答案 1 :(得分:0)

将你的字符串包装在div中并使用选择器来获取div的文本。

<div class="body-layout" id="wide-wrapper">
<div id="wrap-all">
 some content will be there
<div class="json">
    {"success":1,"message":"Data Success","data":[{"title":"RECRUITMENT IN NATIONAL INSURANCE COMPANY LIMITED (NICL)","disp":"RECRUITMENT OF 205, we hide [...]","link":"\/recruitment-national-insurance-company-limited-nicl-0"},{"title":"RECRUITMENT OF PO IN BANK OF BARODA (BOB)","disp":"RECRUITMENT OF 400, we hide [...]","link":"\/recruitment-po-bank-baroda-bob"},{"title":"SBI PO Prelims Admit Card 2017","disp":"SBI PO 2017 Admit Card for, we hide [...]","link":"\/sbi-po-prelims-admit-card-2017"}]}
</div>         
</div>

textContentjavascript一起使用。 textContent属性表示节点及其后代的文本内容。 MDN textContent或您可以使用innerHTML

<script>
    var str = document.getElementById('json').textContent;
    var json = JSON.parse(str);
    console.log(json);
</script>

控制台日志屏幕截图 enter image description here

答案 2 :(得分:0)

如果您无法更改div中的文字,则可以使用 regular expression match 方法匹配特定字符串。

/{\s*\".*}/g使用给定字符串中的JSON格式进行操作,该字符串将以{结束{开头,并且隐藏中间的任何字符

{ - 以{

开头

\s*\".* - 它会允许空格,&#34;,中间的任何单词

} - 以}

结束

&#13;
&#13;
var str = document.getElementById('wrap-all').innerHTML;
var JsonStr = matchExact(str);
    console.log(JsonStr);
function matchExact(str) {
	var r = /{\s*\".*}/g
   var match = str.match(r);
   return match != null && match[0];
}
&#13;
<div class="body-layout" id="wide-wrapper">
<div id="wrap-all">some content will be there
    {"success":1,"message":"Data Success","data":[{"title":"RECRUITMENT IN NATIONAL INSURANCE COMPANY LIMITED (NICL)","disp":"RECRUITMENT OF 205, we hide [...]","link":"\/recruitment-national-insurance-company-limited-nicl-0"},{"title":"RECRUITMENT OF PO IN BANK OF BARODA (BOB)","disp":"RECRUITMENT OF 400, we hide [...]","link":"\/recruitment-po-bank-baroda-bob"},{"title":"SBI PO Prelims Admit Card 2017","disp":"SBI PO 2017 Admit Card for, we hide [...]","link":"\/sbi-po-prelims-admit-card-2017"}]}         
</div>
&#13;
&#13;
&#13;

<强> Working example in Fiddle

答案 3 :(得分:-1)

使用strip_tags()函数

 <?php
$string = '<div class="body-layout" id="wide-wrapper">
<div id="wrap-all">
{"success":1,"message":"Data Success","data":[{"title":"RECRUITMENT IN NATIONAL INSURANCE COMPANY LIMITED (NICL)","disp":"RECRUITMENT OF 205, we hide [...]","link":"\/recruitment-national-insurance-company-limited-nicl-0"},{"title":"RECRUITMENT OF PO IN BANK OF BARODA (BOB)","disp":"RECRUITMENT OF 400, we hide [...]","link":"\/recruitment-po-bank-baroda-bob"},{"title":"SBI PO Prelims Admit Card 2017","disp":"SBI PO 2017 Admit Card for, we hide [...]","link":"\/sbi-po-prelims-admit-card-2017"}]}         
</div>';
echo strip_tags($string);
?>