首页 > 解决方案 > 无法解析nodejs中的json对象

问题描述

我正在尝试迭代 json 的每个元素但无法打印。我也厌倦了 JSON.parse()。

代码:

var j = "{\"Type\": \"INFO \",\"TimeStamp\":\"2018-10-10 12:05:16.881\",\"IP\":\"2001:0:9d38:90d7:804:3589:8a3c:e43a\",\"MacId\":\"84:7B:EB:3F:65:A4\",\"OS\":\"Microsoft Windows 10 Home Single Language\",\"Method\":\"SyncData\",\"LineNo\":527,\"Message\":\"SyncData: Billing Software SyncData() called\"}\r\n{\"Type\": \"INFO \",\"TimeStamp\":\"2018-10-10 12:05:17.060\",\"IP\":\"2001:0:9d38:90d7:804:3589:8a3c:e43a\",\"MacId\":\"84:7B:EB:3F:65:A4\",\"OS\":\"Microsoft Windows 10 Home Single Language\",\"Method\":\"SyncData\",\"LineNo\":38,\"Message\":\"SyncData: Start\"}\r\n{\"Type\": \"INFO \",\"TimeStamp\":\"2018-10-10 12:05:17.111\",\"IP\":\"2001:0:9d38:90d7:804:3589:8a3c:e43a\",\"MacId\":\"84:7B:EB:3F:65:A4\",\"OS\":\"Microsoft Windows 10 Home Single Language\",\"Method\":\"SyncData\",\"LineNo\":44,\"Message\":\"SyncData: LocalConnectionString = Data Source=PARAM\\\\MSSQL2K8r2;Initial Catalog=HQPharma;User ID=sa;Password=developer;\"}";  
for(var key in j){
    console.log(j[key]);
}

上面的代码打印每个字符,如 在此处输入图像描述

标签: javascriptnode.js

解决方案


当我格式化你的字符串时我注意到的是这个

{
 "Type": "INFO ",
  "TimeStamp": "2018-10-10 12:05:16.881",
  "IP": "2001:0:9d38:90d7:804:3589:8a3c:e43a",
  "MacId": "84:7B:EB:3F:65:A4",
  "OS": "Microsoft Windows 10 Home Single Language",
  "Method": "SyncData",
  "LineNo": 527,
  "Message": "SyncData: Billing Software SyncData() called"
}\n{
  "Type": "INFO ",
  "TimeStamp": "2018-10-10 12:05:17.060",
  "IP": "2001:0:9d38:90d7:804:3589:8a3c:e43a",
  "MacId": "84:7B:EB:3F:65:A4",
  "OS": "Microsoft Windows 10 Home Single Language",
  "Method": "SyncData",
  "LineNo": 38,
  "Message": "SyncData: Start"
}\n{
  "Type": "INFO ",
  "TimeStamp": "2018-10-10 12:05:17.111",
  "IP": "2001:0:9d38:90d7:804:3589:8a3c:e43a",
  "MacId": "84:7B:EB:3F:65:A4",
  "OS": "Microsoft Windows 10 Home Single Language",
  "Method": "SyncData",
  "LineNo": 44,
  "Message": "SyncData: LocalConnectionString = Data Source=PARAM\\MSSQL2K8r2;Initial Catalog=HQPharma;User ID=sa;Password=developer;"
}

要使用这个,你可以做这样的事情

const j = "{\"Type\": \"INFO \",\"TimeStamp\":\"2018-10-10 12:05:16.881\",\"IP\":\"2001:0:9d38:90d7:804:3589:8a3c:e43a\",\"MacId\":\"84:7B:EB:3F:65:A4\",\"OS\":\"Microsoft Windows 10 Home Single Language\",\"Method\":\"SyncData\",\"LineNo\":527,\"Message\":\"SyncData: Billing Software SyncData() called\"}\r\n{\"Type\": \"INFO \",\"TimeStamp\":\"2018-10-10 12:05:17.060\",\"IP\":\"2001:0:9d38:90d7:804:3589:8a3c:e43a\",\"MacId\":\"84:7B:EB:3F:65:A4\",\"OS\":\"Microsoft Windows 10 Home Single Language\",\"Method\":\"SyncData\",\"LineNo\":38,\"Message\":\"SyncData: Start\"}\r\n{\"Type\": \"INFO \",\"TimeStamp\":\"2018-10-10 12:05:17.111\",\"IP\":\"2001:0:9d38:90d7:804:3589:8a3c:e43a\",\"MacId\":\"84:7B:EB:3F:65:A4\",\"OS\":\"Microsoft Windows 10 Home Single Language\",\"Method\":\"SyncData\",\"LineNo\":44,\"Message\":\"SyncData: LocalConnectionString = Data Source=PARAM\\\\MSSQL2K8r2;Initial Catalog=HQPharma;User ID=sa;Password=developer;\"}";  

//first remove the \n and join with a comma ,
// enclose your multiple object within an array
const joinedWithComma = "[" + j.split('\n').join(',') + "]"


//now parse this
const parsedValue = JSON.parse(joinedWithComma)


console.log(parsedValue)


推荐阅读