如何从文本中获取JSON数据?

时间:2013-07-26 08:10:47

标签: javascript regex json

我有一个字符串,如下所示:

  

sometext { “点”:{ “点”:[{ “LAT”: “55.68705772049725”, “LON”: “21.127218855544925”},{ “LAT”: “55.68714472465217”, “LON”: “21.127141742035747”} ,{ “LAT”: “55.6871934235096”, “LON”: “21.12712439149618”},{ “LAT”: “55.68733625113964”, “LON”: “21.127151465043426”},{ “LAT”: “55.68751168437302”, “LON”: “21.12717761658132”},{ “LAT”: “55.687646800652146”, “LON”: “21.127120200544596”},{ “LAT”: “55.68781033158302”, “LON”: “21.127034788951278”},{ “LAT”: “55.687981490045786”, “LON”: “21.12691568210721”}]}} sometext

是否可以在regex中使用JSON提取Javascript

P.S。 我获得了大量数据并将其加入到字符串中。所以我需要从该字符串中获取json,因为可以有第一个对象的结束和其他

的开头

2 个答案:

答案 0 :(得分:5)

假设你没有JSON部分之外的大括号,并且假设编码的是一个对象,就像你的例子(不是一个数组)那样,你可以做

var obj = JSON.parse(s.match(/({.*})/)[1]);

如果你有外面的大括号,你将不得不寻找一种更可靠的方法来检测JSON部分的开始和结束。

答案 1 :(得分:1)

var str = 'sometext{"points":{"point":[{"lat":"55.68705772049725","lon":"21.127218855544925"},{"lat":"55.68714472465217","lon":"21.127141742035747"},{"lat":"55.6871934235096","lon":"21.12712439149618"},{"lat":"55.68733625113964","lon":"21.127151465043426"},{"lat":"55.68751168437302","lon":"21.12717761658132"},{"lat":"55.687646800652146","lon":"21.127120200544596"},{"lat":"55.68781033158302","lon":"21.127034788951278"},{"lat":"55.687981490045786","lon":"21.12691568210721"}]}}sometext';

var object = JSON.parse(str.match(/({.*})/).pop());