R 从多行json字段中提取值(使用列表) 输入端的表:

R 从多行json字段中提取值(使用列表) 输入端的表:,r,json,list,parsing,R,Json,List,Parsing,我期望得到什么 cur\u dt cur_dt <- data.frame(matrix(ncol = 2, nrow = 0)) colnames(cur_dt) <- c("key_id", "json") cur_dt[nrow(cur_dt) + 1,] = c('111', '{"refresh":[{"plu":"72215","name":"

  • 我期望得到什么
  • cur\u dt
    
    cur_dt <- data.frame(matrix(ncol = 2, nrow = 0))
    colnames(cur_dt) <- c("key_id", "json")
    cur_dt[nrow(cur_dt) + 1,] = c('111', '{"refresh":[{"plu":"72215","name":"cake"},{"plu":"3149991","name":"Cola"}],"delete":[]}')
    cur_dt[nrow(cur_dt) + 1,] = c('222', '{"refresh":[],"delete":[{"plu":"77264","name":"apple"},{"plu":"3921666","name":"gr.dessert"}]}')
    cur_dt[nrow(cur_dt) + 1,] = c('333', '{"refresh":[],"delete":[]}')
    cur_dt[nrow(cur_dt) + 1,] = c('444', '{"refresh":[{"plu":"72216","name":"cake2"}],"delete":[]}')
    setDT(cur_dt)
    
    View(
    cur_dt[, 
           plu := RcppSimdJson::fparse(json,
                                       query = '/refresh',
                                       max_simplify_lvl = "list",
                                       empty_array      = NA_character_,
                                       empty_object     = NA_character_,
                                       single_null      = NA_character_,
                                       on_query_error   = NA_character_,
                                       query_error_ok   = TRUE,
                                       type_policy      = "anything_goes")]
    )
    
    cur_dt <- data.frame(matrix(ncol = 4, nrow = 0))
    colnames(cur_dt) <- c("key_id", "json", 'plu', 'name')
    cur_dt[nrow(cur_dt) + 1,] = c('111', '{"refresh":[{"plu":"72215","name":"cake"},{"plu":"3149991","name":"Cola"}],"delete":[]}', '72215', 'cake')
    cur_dt[nrow(cur_dt) + 1,] = c('111', '{"refresh":[{"plu":"72215","name":"cake"},{"plu":"3149991","name":"Cola"}],"delete":[]}', '3149991', 'Cola')
    cur_dt[nrow(cur_dt) + 1,] = c('222', '{"refresh":[],"delete":[{"plu":"77264","name":"apple"},{"plu":"3921666","name":"gr.dessert"}]}', '77264', 'apple')
    cur_dt[nrow(cur_dt) + 1,] = c('222', '{"refresh":[],"delete":[{"plu":"77264","name":"apple"},{"plu":"3921666","name":"gr.dessert"}]}', '3921666', 'gr.dessert')
    cur_dt[nrow(cur_dt) + 1,] = c('333', '{"refresh":[],"delete":[]}', NA_character_, NA_character_)
    cur_dt[nrow(cur_dt) + 1,] = c('444', '{"refresh":[{"plu":"72216","name":"cake2"}],"delete":[]}', '72216', 'cake2')
    setDT(cur_dt)