Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从文本中获取JSON数据?_Javascript_Regex_Json - Fatal编程技术网

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

Javascript 如何从文本中获取JSON数据?,javascript,regex,json,Javascript,Regex,Json,我有一个字符串,类似这样: 一些文本{“点”:{“点”:[{“lat”:“55.68705772049725”,“lon”:“21.127218855544925”},{“lat”:“55.68714472465217”,“lon”:“21.127141742035747”},{“lat”:“55.6871934235096”,“lon”:“21.12712439149618”},{“lat”:“55.68733625113964”,“lon”:“21.12715146504326”},{“la

我有一个字符串,类似这样:

一些文本{“点”:{“点”:[{“lat”:“55.68705772049725”,“lon”:“21.127218855544925”},{“lat”:“55.68714472465217”,“lon”:“21.127141742035747”},{“lat”:“55.6871934235096”,“lon”:“21.12712439149618”},{“lat”:“55.68733625113964”,“lon”:“21.12715146504326”},{“lat”:“55.753784302”,“lat”:“55.6868816532”,“lat”:“21.127120200544596”},{“lat”:“55.68781033158302”,“lon”:“21.127034788951278”},{“lat”:“55.687981490045786”,“lon”:“21.12691568210721”}

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

附言。
我获取了大量数据并将其连接到字符串中。因此,我需要从该字符串中获取json,因为可能有第一个对象的结尾和其他对象的开头,假设json部分之外没有大括号,并且假设编码的是一个对象(而不是数组),那么您可以这样做

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

如果外部有大括号,则必须寻找更可靠的方法来检测JSON部分的开始和结束。

为什么?
JSON.parse
不够好?@Jon
JSON.parse()
将在本例中抛出
SyntaxError:Unexpected token s
。在将字符串传递给
JSON之前,您是否有理由不能从字符串的开头和结尾删除
sometext
。解析
?我获取了大量数据并将其加入到字符串中。因此,我需要从该字符串中获取JSON,因为可能会有fir的结尾s的对象和other@Kirix:如果您将JSON对象连接在一起,并且您可以控制该过程,请为这些对象创建一个有效的JSON数组字符串,而不是任意字符串连接。您需要澄清整个格式是什么,尤其是
sometext
部分。现在假设您半随机字符串中的一个JSON对象(
sometext
部分不包含任何
[,{,},]
),这在您的情况下可能不是真的。方括号呢?
[55.68714472465217,21.127141742035747]
也是有效的JSON。@PavloMykhalov我在回答中提到了这一点。我猜OP正在尝试解析一个用JSON编码的特定对象。如果OP说他可能需要处理顶级数组,那么我会给出一个更复杂的答案。问题是我找不到这个解决方案。@Kirix你的确切意思是什么?你有m吗您的文本中有多个JSON文本?您有顶级数组吗?
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());