我想從字串陣列構造一個帶有鍵值對的物件陣列。
字串陣列格式:
['<ISO Date> - <Log Level> - {"transactionId: "<UUID>", "details": "<message event/action description>", "err": "<Optionall, error description>"}']
物件陣列格式:
[{"timestamp": <Epoch Unix Timestamp>, "loglevel": "<loglevel>", "transactionId: "<UUID>", "err": "<Error message>" }]
stringArray = [
"2021-08-09T02:12:51.259Z - error - {\"transactionId\":\"9abc55b2-807b-4361-9dbe-aa88b1b2e978\",\"details\":\"Cannot find user orders list\",\"code\": 404,\"err\":\"Not found\"}",
"2022-08-09T02:12:51.275Z - error - {\"transactionId\":\"9abc55b2-807b-4361-9dbe-aa88b1b2e978\",\"details\":\"Cannot find user orders list\",\"code\":404,\"err\":\"Cannot find user orders list"}"
];
objectArray = [
{
"timestamp":1628475171259,
"loglevel":"error",
"transactionId":"9abc55b2-807b-4361-9dbe-aa88b1b2e978",
"err":"Not found"
},
{
"timestamp":1660011171275,
"loglevel":"error",
"transactionId":"9abc55b2-807b-4361-9dbe-aa88b1b2e97",
"err":"Cannot find user orders list"
}
];
uj5u.com熱心網友回復:
您可以將每一行解構為 "timestamp" - "logLevel" - "jsonStringified"
后者可以JSON.parsed 來檢索物件
請注意,也許您應該確保每一行都包含格式。否則你會有錯誤需要處理(如果沒有jsonStringified,其他人輸出了一些隨機行,等等)
stringArray = [
"2021-08-09T02:12:51.259Z - error - {\"transactionId\":\"9abc55b2-807b-4361-9dbe-aa88b1b2e978\",\"details\":\"Cannot find user orders list\",\"code\": 404,\"err\":\"Not found\"}",
"2022-08-09T02:12:51.275Z - error - {\"transactionId\":\"9abc55b2-807b-4361-9dbe-aa88b1b2e978\",\"details\":\"Cannot find user orders list\",\"code\":404,\"err\":\"Cannot find user orders list\"}"
];
const tsCapture = '(.{' "2022-08-09T02:12:51.275Z".length '})'
const levelCapture = '(error|warning|debug)'
const stringCapture = '(. )'
const reg = new RegExp('^' tsCapture ' - ' (levelCapture) ' - ' stringCapture '$')
const parsed = stringArray.map(line => {
const [_, timestamp, logLevel, str] = line.match(reg)
return {timestamp, logLevel, ...JSON.parse(str)}
})
console.log({ parsed })
uj5u.com熱心網友回復:
在 Java 中,您可以通過使用標記進行拆分來做到這一點
JSONArray jsonArray = new JSONArray();
for(int i=0;i<stringArray.length; i ) {
String string = stringArray[i];
String[] stringSplit = string.split(" - ");
JSONObject object = new JSONObject();
object.put("timestamp", stringSplit[0]);
object.put("loglevel", stringSplit[1]);
String[] transtactionDetailSplit = stringSplit[2].split(":|,");
object.put("transactionId", transtactionDetailSplit[1]);
object.put("err", transtactionDetailSplit[7]);
jsonArray.add(object);
}
System.out.println(jsonArray);
請在需要的地方添加空檢查
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/418009.html
標籤:
