javascript - 无法解析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]);
}
解决方案
当我格式化你的字符串时我注意到的是这个
{
"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)
推荐阅读
- c# - 使用持久 ID 的 C# 将 XML 数据加载到现有数据库中
- javascript - Javascript映射两个对象数组
- mysql - MySQL 服务器已消失 + 读取结果集标头时出错
- leaflet - 传单控件上不显示 img
- azure - Azure 应用程序网关:502 / SNI/SSL 问题?使用应用服务进行配置
- excel - 我可以将 VBA 中的计算值添加到单元格的悬停鼠标悬停中吗?
- mongodb - 我在 mongoDB 中有如下记录。需要查询以使用 startTime 获取前一天的结果
- java - `distinctUntilChanged`如何在调用onNext后允许相同的项目
- alexa-skills-kit - Alexa SDK V2 StateHandler - 多个意图共享相同的槽值
- asp.net-mvc - 升级 umbraco 后未从 bundle.cs 加载 Js 和 css 文件(返回 404)