R:词法错误:json文本中的无效char

问题描述 投票:0回答:1

我正在从python转换为R,这是我第一次解析Json。我已经尝试过jsonlite,RJSONIO和rjson。它们都停在getlabskaters <- fromJSON(getlabskatersRaw)。为了稍微解释一下此脚本,因为我显然需要一些有关如何正确解析json的帮助,它会开始购买返回一个网站的网站,该网站将返回一些我在for循环中使用的球队,以返回所有具有该球队列表的球员。奇怪的是,当我运行上述fromJSON时不会发生该错误,仅当将其放入for循环中时才会发生。我已经检查了paste0print(getlabskatersRaw)的链接。所有这些似乎都可以浏览。对错误的一些帮助将是非常棒的,如果您无聊并且对更好的解析策略有任何建议,我将不胜枚举。

library(magrittr)
library(readr)
library(tidyr)
library(dplyr)
library(lubridate)
library(jsonlite)
library(httr)
library(stringi)
library(tidyverse)
library(httr)

# GET Todays date
today <- Sys.Date()

#Json return from URL
getlabteamsRaw<-paste0('https://www.fantasylabs.com/api/lines/4/', as.character(today),'/startinggoalies')

# Turn Value into List
getlabteams <- fromJSON(getlabteamsRaw)

# Parse home team
team<-getlabteams$GoalieMatchups$Properties$HomeTeam

# Convert 
Home_Fullname<-as.data.frame(team)
team<-getlabteams$GoalieMatchups$Properties$VisitorTeam
Away_Fullname<-as.data.frame(team)
LabTeams <- full_join(Home_Fullname, Away_Fullname, by = c("team"))

# PLAYER INDIVIDUAL NULL DF's
lab_skaters_df <- NULL

for(labtm in LabTeams){
  getlabskatersRaw<-paste0('https://www.fantasylabs.com/api/lines/4/', as.character(labtm),'/', as.character(today))

  ### THE ERROR IS HERE########
  getlabskaters <- fromJSON(getlabskatersRaw)

  # Parse Player name
  new<-getlabskaters$PlayerLines$Properties$FullName

  # Convert Value to Dataframe
  Fullname<-as.data.frame(new)

  #APPEND FEATURE 
  lab_skaters_df <- rbind(lab_skaters_df, Fullname)
}
r jsonlite rjson rjsonio
1个回答
0
投票

我认识到这不是一个答案,因为我只是在转储代码,没有解释问题,但这对您有用。我还清理了您的代码(特别是您正在加载一堆您实际上并未使用或已经通过library(tidyverse)加载的软件包),并且我正在使用map_df软件包中的purrr函数在团队中循环,而不是在循环中循环。

library(jsonlite)
library(tidyverse)

# GET Todays date
today <- Sys.Date()

#Json return from URL
getlabteamsRaw <- paste0('https://www.fantasylabs.com/api/lines/4/', today, '/startinggoalies')

# Turn Value into List
getlabteams <- fromJSON(getlabteamsRaw)

teams <- c(getlabteams$GoalieMatchups$Properties$HomeTeam, getlabteams$GoalieMatchups$Properties$VisitorTeam)

myfun <- function(x) {
  getlabskatersRaw <- paste0('https://www.fantasylabs.com/api/lines/4/', x,'/', today)
  getlabskaters <- fromJSON(getlabskatersRaw)
  select(getlabskaters$PlayerLines$Properties, FullName, Position, Position, Line, Team, OppTeam, Salary_DK, Salary_FD, ActualPoints_DK, ActualPoints_FD, ImpPts_DK, ImpPts_FD)
}

myfinal_df <- map_df(teams, myfun)

# Wait a few seconds
myfinal_df
               FullName Position Line               Team             OppTeam Salary_DK Salary_FD
1       Phillip Danault       1C   1F Montreal Canadiens  Chicago Blackhawks      5400      5500
2           Carey Price       1G   1G Montreal Canadiens  Chicago Blackhawks      7900      8400
3           Ben Chiarot      1LD   1D Montreal Canadiens  Chicago Blackhawks      4400      4000
4           Tomas Tatar      1LW   1F Montreal Canadiens  Chicago Blackhawks      5800      6400
5            Shea Weber      1RD   1D Montreal Canadiens  Chicago Blackhawks      6400      6200
© www.soinside.com 2019 - 2024. All rights reserved.