gpt4 book ai didi

JavaScript - 从日志文件中提取 JSON

转载 作者:行者123 更新时间:2023-11-29 19:11:36 25 4
gpt4 key购买 nike

我需要从日志文件中提取 JSON 字符串(稍后将用于解析 JSON)。该文件采用以下格式:

[16:11:20] some text
[16:11:20] some text
some text
some text
[
{
"description": "some text",
"elements": [{
"id": "some text",
"keyword": "some text",
"line": 20,
"name": "some text",
"steps": [{
"arguments": [],
"keyword": "some text ",
"result": {
"status": "passed",
"duration": 14884761888
},
"hidden": true,
"match": {
"location": "some text"
}
},
{
"arguments": [],
"keyword": "sometext ",
"name": "sometext",
"result": {
"status": "passed",
"duration": 463674
},
"line": 11,
"match": {
"location": "sometext"
}
}
],
"tags": [
{
"name": "@sometext-no",
"line": 7
},
{
"name": "@sometext",
"line": 8
}
],
"type": "sometext"
}

],
"id": "sometext",
"keyword": "sometext",
"line": 1,
"name": "sometext",
"tags": [],
"uri": "sometext"
}
][16:11:54] some text
[16:11:54] some text

我如何在 JavaScript 中构建一个正则表达式,它将从该文件中提取 JSON 数据,以便 string.match() 可以使用它来提供所需的输出

我正在尝试的模式如下

var regExtract = /(\[\s+\{[\s\S]*\}\s+\]\s+\}\s+\]\s+\}\s+\])/;
var matchedJson = data.toString().match(regExtract)[1];

最佳答案

我更新了我的答案,你可以试试这样的:

var str = `[16:11:20] some text
[16:11:20] some text
some text
some text
[
{
"description": "some text",
"elements": [{
"id": "some text",
"keyword": "some text",
"line": 20,
"name": "some text",
"steps": [{
"arguments": [],
"keyword": "some text ",
"result": {
"status": "passed",
"duration": 14884761888
},
"hidden": true,
"match": {
"location": "some text"
}
},
{
"arguments": [],
"keyword": "sometext ",
"name": "sometext",
"result": {
"status": "passed",
"duration": 463674
},
"line": 11,
"match": {
"location": "sometext"
}
}
],
"tags": [
{
"name": "@sometext-no",
"line": 7
},
{
"name": "@sometext",
"line": 8
}
],
"type": "sometext"
}

],
"id": "sometext",
"keyword": "sometext",
"line": 1,
"name": "sometext",
"tags": [],
"uri": "sometext"
}
][16:11:54] some text
[16:11:54] some text
`;

var json = '';
var jsonArray = [];
var implode = false;
str.split('\n').forEach(function(v, k){
if(v === ' {'){
console.log(k, v);
implode = true;
}

if(implode){
json = json + v + '\n';
}

if(v === ' }'){
console.log(k, v);
implode = false;
jsonArray.push(json.trim());
json = '';

console.log(jsonArray);
}
});
console.log(JSON.parse(jsonArray[0]));

fiddle :https://jsfiddle.net/x0cc25q4/7/

更新:带有正则表达式的简短版本:

var arr = str.split('\n').join('').match(/\[\s{2}(\{.*?\})\]/g);
console.log(JSON.parse(arr[0]));

fiddle :https://jsfiddle.net/x0cc25q4/8/

关于JavaScript - 从日志文件中提取 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38467597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com