我有一个看起来像 this的日志文件.

我试图通过以下方式解析Message列中的JSON:

library(readr)
library(jsonlite)

df <- read_csv("log_file_from_above.csv")
fromJSON(as.character(df$Message))

但是,我遇到了以下错误:

Error: parse error: trailing garbage
          "isEmailConfirmed": false  } {    "id": -1,"firstName": 
                     (right here) ------^

我怎样才能摆脱“拖尾垃圾”?

解决方法

fromJSON()不是“应用”字符向量,它试图将它全部转换为数据帧.你可以试试
purrr::map(df$Message,jsonlite::fromJSON)

@Abdou提供的内容或

jsonlite::stream_in(textConnection(gsub("\\n","",df$Message)))

后两者将创建数据帧.第一个将创建一个列表,您可以添加为列.

您可以使用dplyr :: bind_cols的最后一个方法创建包含所有数据的新数据框:

dplyr::bind_cols(df[,1:3],jsonlite::stream_in(textConnection(gsub("\\n",df$Message))))

@Abdou也提出了一个几乎纯粹的基础R解决方案:

cbind(df,do.call(plyr::rbind.fill,lapply(paste0("[",df$Message,"]"),function(x) jsonlite::fromJSON(x))))

完整,有效,工作流程:

library(dplyr)
library(jsonlite)

df <- read.table("http://pastebin.com/raw/MMPMwNZv",quote='"',sep=",",stringsAsFactors=FALSE,header=TRUE)

bind_cols(df[,stream_in(textConnection(gsub("\\n",df$Message)))) %>%
  glimpse()
## 
 Found 3 records...
 Imported 3 records. Simplifying into dataframe...
## Observations: 3
## Variables: 19
## $Id                  <int> 35054,35055,35059
## $Date                <chr> "2016-06-17 19:29:43 +0000","2016-06-17 1...
## $Level               <chr> "INFO","INFO","INFO"
## $id                  <int> -2,-1,-3
## $ipAddress           <chr> "100.100.100.100",NA,"100.200.300.400"
## $howYouHearaboutUs   <chr> NA,"Radio",NA
## $isInterestedInOffer <lgl> TRUE,FALSE,TRUE
## $incomeRange         <int> 60000,1,100000
## $isEmailConfirmed    <lgl> FALSE,TRUE
## $firstName           <chr> NA,"John",NA
## $lastName            <chr> NA,"Smith",NA
## $email               <chr> NA,"john.smith@gmail.com",NA
## $city                <chr> NA,"Smalltown",NA
## $birthDate           <chr> NA,"1999-12-10T05:00:00Z",NA
## $password            <chr> NA,"*********",NA
## $agreetoTermsOfUse   <lgl> NA,TRUE,TRUE
## $visitUrl            <chr> NA,"https://www.website.com/?purpose=X"
## $isIdentityConfirmed <lgl> NA,FALSE
## $validationResults   <lgl> NA,NA

解析错误:在尝试解析数据框中的JSON列时“追踪垃圾”的更多相关文章

  1. 如何用swift识别字符串中的大小写字符?

    我知道我可以从swift调用C函数,但是对我来说似乎不正确。我该怎么做才能做到这一点呢?您可以随时查看小写表示与当前值的不同;

  2. 如何检查字符串是否包含Swift中的字母?

    参见英文答案>WhatisthebestwaytodetermineifastringcontainsacharacterfromasetinSwift7个我试图检查一个特定的字符串是否包含字母.到目前为止,我已经看到了NSCharacterSet.letterCharacterSet()作为一组字母,但我无法检查该集合中的一个字符是否在给定的字符串中.当我使用这个代码时,我收到一个错误:‘Cha

  3. Python中的chr()函数与ord()函数解析

    这篇文章主要介绍了Python中的chr()函数与ord()函数解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  4. php – 使用chr rand生成随机字符(A-Z)

    我正在使用以下方法从A-Z生成随机字符,但它偶尔会生成@符号.知道如何防止这种情况吗?也许字符范围不正确?ExampleUsage$randomNumber=izrand;//生成32位数字作为字符串$randomAlphaNumeric=izrand();//生成32位字母数字字符串TypecasttoInteger如果要将数字类型转换为整数,请在执行此操作后执行此操作生成数字.注意:如果它们存在,这将丢弃任何前导零.$randomNumber=$randomNumber;izrand()v2

  5. 在PHP中如何将字节数组转换成字符串?

    我有一个字节数组,我想映射到它们的ASCII等价物.我该怎么做?如果按字节数组表示:array_map()那么就像:的foreach()哪个是紧凑型的:包()但最好的替代方案可能是使用pack(“C*”,[$array…]),即使它需要一个简单的数组解决方法来传递整数列表:如果您可能需要从字节C*切换到字符S*或甚至具有32位整数L*的列表,那么该结构也将更有用.

  6. 正则================================================

    >.*?",@"",@"([\r\n])[\s]+",@"&(quot|#34);",@"&(amp|#38);",@"&(lt|#60);",@"&(gt|#62);",@"&(nbsp|#160);",@"&(iexcl|#161);",@"&(cent|#162);",@"&(pound|#163);",@"&(copy|#169);",@"&#(\d+);",@"-->",@"

  7. 正则表达式:匹配符号

    i)不区分大小写.该标志对组无效.它指定正则表达式匹配时不涉及大小写.(?m)^与$匹配数据内的换行符.(?s).匹配任意字符,包括换行.(?

  8. Ubuntu16.10偶遇linux0.11

    转自:http://www.mamicode.com/info-detail-1321279.html标签:Ubuntu16.10偶遇linux0.11编译环境Ubuntu16.10gcc5.2.1问题集锦1.as86-0-a-oboot/bootsect.oboot/bootsect.smake:as86:命令未找到Makefile:92:recipefortarget‘boot/bootsec

  9. 解析错误:在尝试解析数据框中的JSON列时“追踪垃圾”

    我有一个看起来像this的日志文件.我试图通过以下方式解析Message列中的JSON:但是,我遇到了以下错误:我怎样才能摆脱“拖尾垃圾”?解决方法fromJSON()不是“应用”字符向量,它试图将它全部转换为数据帧.你可以试试@Abdou提供的内容或后两者将创建数据帧.第一个将创建一个列表,您可以添加为列.您可以使用dplyr::bind_cols的最后一个方法创建包含所有数据的新数据框:@Abdou也提出了一个几乎纯粹的基础R解决方案:完整,有效,工作流程:

  10. 德尔福 – 我在哪里可以找到“ESC / POS”爱普生条码测试程序?

    我正在努力让Epson“ESC/POS”打印机打印条形码,并想测试打印机是否有故障.你知道在哪里可以找到在“ESC/POS”中打印条形码的程序吗?

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部