我有一些以这种方式格式化的文本:
var string = 'some random text fjijd {"Type":"NewTunnel","Payload":{"ReqId":"e425ebb50d220816","Url":"asaa","Protocol":"http","Error":""}} some other text bla bla'
我想知道如何提取可以使用正则表达式解析的json字符串化对象。
我正在使用spawn
从node.js应用程序运行子进程,并以这种方式格式化的纯文本中运行stdout
数据(即应用程序日志-log=stdout
)。不要问我怎么样,为什么,抱歉!
var cproc = require("child_process");
proc = cproc.spawn("./ngrok", ['-log=stdout', '8080']);
proc.stdout.on("data", function(res) {
console.log("Data received: " + res);
});
收到的数据是纯文本,如下所示:
[08/10/14 01:49:37] [DEBG] [ctl:604a481c] Read message {"Type":"ReqProxy","Payload":{}}
它还包括调试信息!
答案 0 :(得分:3)
上次更新:又一个解决方案
/((?:{).*(?:}))/g
最初的答案:
这个怎么样?我相信你只需要这个字符串中的JSON部分。如果您不希望嵌套对象,则可以将模式更改为/({.*?})/g
var s = 'some random text fjijd {"Type":"NewTunnel","Payload":{"ReqId":"e425ebb50d220816","Url":"asaa","Protocol":"http","Error":""}} some other text bla bla';
var m = s.match(/({.*})/g); // or /({+.*}+)/g or /(({+).*(}+))/g
console.log(m[0]);
输出:
{"Type":"NewTunnel","Payload":{"ReqId":"e425ebb50d220816","Url":"asaa","Protocol":"http","Error":""}}
答案 1 :(得分:2)