Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.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 - Fatal编程技术网

Javascript 查找并获取给定文本中的JSON数组

Javascript 查找并获取给定文本中的JSON数组,javascript,Javascript,我在示例中有一个包含多个JSON的文本字符串: 一些文本{“标题”:“谷歌”,“描述”:“搜索网页,图像, 视频和更多。}然后再次出现一些文本{“标题”:“谷歌”, “说明”:“搜索网页、图像、视频等。”}一些文本 再次 这是JSON,字符串中可能有多个时间: { "title":"xyz", "description":"xyz", "image":"https:\/\/www.google.com\/images\/logo.png", "url":"https:\/\/www.go

我在示例中有一个包含多个JSON的文本字符串:

一些文本{“标题”:“谷歌”,“描述”:“搜索网页,图像, 视频和更多。}然后再次出现一些文本{“标题”:“谷歌”, “说明”:“搜索网页、图像、视频等。”}一些文本 再次

这是JSON,字符串中可能有多个时间:

    {
"title":"xyz",
"description":"xyz",
"image":"https:\/\/www.google.com\/images\/logo.png",
"url":"https:\/\/www.google.com\/"
}
是否有任何方法可以获取数组中的所有JSON字符串。
提前感谢:)

您可以使用
Object.values()
获取所有值。或者使用
map
获取值。以下是这两方面的例子:

var obj={
“标题”:“xyz”,
“说明”:“xyz”,
“图像”:“https:\/\/www.google.com\/images\/logo.png”,
“url”:“https:\/\/www.google.com\/”
};
var arr=对象值(obj);
控制台日志(arr);
var arr=Object.keys(obj).map(函数(k){
返回对象[k]
});

控制台日志(arr)如果您知道对象不包含嵌套对象,那么这种(非常幼稚的)方法可能会起作用:

var text=`some text{“title”:“Google”,“description”:“搜索网页、图像、视频等”。}然后再搜索一些文本{“title”:“Google”,“description”:“搜索网页、图像、视频等”。}再搜索一些文本`;
常量结果=[].concat.apply(
[], 
text.split('{').map(part=>part.split('}'))
)
.filter((_,i)=>i%2)
.map(部分=>`{${part}}`)
.map(json=>{
试一试{
返回JSON.parse(JSON);
}捕获(e){
返回null;
}
})
.过滤器(布尔值);
控制台日志(结果)使用获取所有匹配的JSON字符串:

var re = new RegExp(/\{\s*"title"\s*:\s*(.+?)\s*,\s*"description":\s*(.+?)\s*,\s*"image":\s*(.+?)\s*,\s*"url":\s*(.+?)\s*}/, 'g');
var text = 'some text { "title":"Google", "description":"1. Search webpages, images, videos and more.", "image": "image1", "url": "url1" } then again some text { "title":"Google", "description":"2. Search webpages, images, videos and more.", "image": "image2", "url": "url2"} some text again';
var matches = text.match(re);

我不太确定您想要实现什么-我认为您想要捕获所有JSON对象,所以正则表达式可能会有所帮助。现在我不是正则表达式专家,这是一个超级快速的破解,但是你可以用

var str = YOUR _STRING_HERE;

// this is in no way fault tolerant
var rgx = /\{[^\}]*\}/g;

var jsons = [];
var match;

while ((match = rgx.exec(str)) !== null) {
  jsons.push(match[0]);
}

// do something useful with your JSONs
console.log(jsons);

你能不能说得更具体一点,这样我们可以帮助你。你知道JSON之间的文本是什么吗?你有没有试过用正则表达式从字符串中提取JSON?如果对象都是平面/一层深的,只需在它们之间提取字符串,包括
{…}