如何解析ID对应的R中的Json

如何解析ID对应的R中的Json,r,json,dataframe,jsonlite,R,Json,Dataframe,Jsonlite,我在下面提到了dataframe: ID Json_Data PA-124 Json String PA-145 Json String PA-185 Json String PA-149 Json String 我想提取与每个ID对应的所有json字段,如下所述 我想知道如何针对每个特定的ID(即国家)提取特定字段 为此,我使用了下面提到的代码,但它只针对1500个ID中的一个ID返回值 我的代码: library(RJSONIO)

我在下面提到了dataframe:

ID         Json_Data
PA-124     Json String
PA-145     Json String
PA-185     Json String
PA-149     Json String
我想提取与每个ID对应的所有json字段,如下所述

我想知道如何针对每个特定的
ID
(即国家)提取特定字段

为此,我使用了下面提到的代码,但它只针对1500个ID中的一个ID返回值

我的代码:

    library(RJSONIO)
    library(rjson)
    library(jsonlite)
    library(data.table)


    f <- function(json, id){
      tmp    <- jsonlite::fromJSON(json)
      tmp    <- as.data.frame(tmp)
      tmp$id <- id
      return(tmp)
    }

json_dfs <- 
  mapply(f, Df$Json_Data, Df$ID, SIMPLIFY = FALSE)

可以使用
unlist
将其转换为字符向量,然后将字符向量列表行绑定到data.frame中。然后将结果与您的ID绑定

cbind(temp$ID,
    do.call(rbind, lapply(temp$Json_Data, function(x) unlist(jsonlite::fromJSON(x))))
)
结果:

              hed.srti nnaesr.name nnaesr.firt nnaesr.last nnaesr.birth nnaesr.gender iteret.adre  iteret.adfe iteret.sfdet iteret.sfeet iteret.serted iteret.sertgf
[1,] "PA-124" "RT1455" ""          "alex"      "john"      "26061981"   "Male"        "asded14eer" ""          ""           ""           ""            ""           
[2,] "PA-124" "RT1455" ""          "alex"      "john"      "26061981"   "Male"        "asded14eer" ""          ""           ""           ""            ""           
[3,] "PA-124" "RT1455" ""          "alex"      "john"      "26061981"   "Male"        "asded14eer" ""          ""           ""           ""            ""           
     sefetgd.mobe sefetgd.dfete sefetgd.tfet aarfgeette.aarfgertte aarfgeette.aarfgot2    aarfgeette.aarfgot3 aarfgeette.aarfgot4 aarfgeette.aarfgot5 aarfgeette.sdfffy
[1,] "2111111"    ""            "sdfet"      "H NO. , dffr rtrg"   "ids School, feeeete," ""                  ""                  ""                  "errtyy"         
[2,] "2111111"    ""            "sdfet"      "efeet efet"          "affe fe,"             ""                  ""                  ""                  "Telangana"      
[3,] "2111111"    ""            "sdfet"      "ad.de 25dfege"       "adfed ,"              ""                  ""                  ""                  "adffe"          
     aarfgeette.errrte aarfgeette.sdetVb aarfgeette.sdfes aarfgeette.aarfgppr aarfgeette.seferf
[1,] "efeteet"         ""                "5500"           "eretft er"         "ered"           
[2,] "Hyderabad"       ""                "5500"           "acefec ee"         "dfefe"          
[3,] "Hyderabad"       ""                "5500"           "sadfe ad"          "dsfde"     

请让你的例子重现。您可以发布前几行的
dput
“Json字符串”
将非常有用。@Axeman感谢您用Json字符串更新了问题。实际上,我们更喜欢
Df
dput
,而不仅仅是Json字符串列。您还可以将
dput(head(Df,3)
添加到问题中吗?@Shique我已经用dput更新了问题。如果
dput(head(Df,3))
仅返回该值,则表示问题中的
Df
只包含一行,从而得到您想要的(只有一个ID)。您需要将所有ID及其json数据放入
Df
。获取此错误:
错误:词法错误:json文本中的字符无效。NA(此处)----^调用自:parse_string(txt,bigint_as_char)
您的数据中存在格式不正确的json,请逐个尝试查找有问题的json。例如,对于(临时$json_数据中的x){print(x);fromJSON(x)}是的,我有一个大的数据帧,逐个检查会很费时…我们没有其他选项从数据帧中找到这种格式错误的Json并将其删除吗?是的,我在注释中添加了它,但仍然无法解析…:(
cbind(temp$ID,
    do.call(rbind, lapply(temp$Json_Data, function(x) unlist(jsonlite::fromJSON(x))))
)
              hed.srti nnaesr.name nnaesr.firt nnaesr.last nnaesr.birth nnaesr.gender iteret.adre  iteret.adfe iteret.sfdet iteret.sfeet iteret.serted iteret.sertgf
[1,] "PA-124" "RT1455" ""          "alex"      "john"      "26061981"   "Male"        "asded14eer" ""          ""           ""           ""            ""           
[2,] "PA-124" "RT1455" ""          "alex"      "john"      "26061981"   "Male"        "asded14eer" ""          ""           ""           ""            ""           
[3,] "PA-124" "RT1455" ""          "alex"      "john"      "26061981"   "Male"        "asded14eer" ""          ""           ""           ""            ""           
     sefetgd.mobe sefetgd.dfete sefetgd.tfet aarfgeette.aarfgertte aarfgeette.aarfgot2    aarfgeette.aarfgot3 aarfgeette.aarfgot4 aarfgeette.aarfgot5 aarfgeette.sdfffy
[1,] "2111111"    ""            "sdfet"      "H NO. , dffr rtrg"   "ids School, feeeete," ""                  ""                  ""                  "errtyy"         
[2,] "2111111"    ""            "sdfet"      "efeet efet"          "affe fe,"             ""                  ""                  ""                  "Telangana"      
[3,] "2111111"    ""            "sdfet"      "ad.de 25dfege"       "adfed ,"              ""                  ""                  ""                  "adffe"          
     aarfgeette.errrte aarfgeette.sdetVb aarfgeette.sdfes aarfgeette.aarfgppr aarfgeette.seferf
[1,] "efeteet"         ""                "5500"           "eretft er"         "ered"           
[2,] "Hyderabad"       ""                "5500"           "acefec ee"         "dfefe"          
[3,] "Hyderabad"       ""                "5500"           "sadfe ad"          "dsfde"