Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 函数自动识别字符串中包含的有效JSON对象?_R_Regex_Tidyverse_Stringr_Jsonlite - Fatal编程技术网

R 函数自动识别字符串中包含的有效JSON对象?

R 函数自动识别字符串中包含的有效JSON对象?,r,regex,tidyverse,stringr,jsonlite,R,Regex,Tidyverse,Stringr,Jsonlite,假设字符串中有一个或多个有效的JSON对象。考虑字符串: paste0("klsdjfo234u", toJSON(iris[1, ]), "lsdkfj20934ujsdfl") # [1] "klsdjfo234u[{\"Sepal.Length\":5.1,\"Sepal.Width\":3.5,\"Petal.Length\":1.4,\"Petal.Width\":0.2,\"Species\":\"setosa\"}]lsdkfj20934ujsdfl" 如果我们知道JSON在字

假设字符串中有一个或多个有效的JSON对象。考虑字符串:

paste0("klsdjfo234u", toJSON(iris[1, ]), "lsdkfj20934ujsdfl")

# [1] "klsdjfo234u[{\"Sepal.Length\":5.1,\"Sepal.Width\":3.5,\"Petal.Length\":1.4,\"Petal.Width\":0.2,\"Species\":\"setosa\"}]lsdkfj20934ujsdfl"
如果我们知道JSON在字符串中的位置,我们可以使用
str_split()
substr()

但对于很长的字符串,这可能是费力的和手动的

是否有任何函数可以自动从字符串中查找有效的JSON?(无需人工干预)

具有所需输出的示例 函数
find_JSON()
,接收字符串并返回有效的JSON对象

paste0("klsdjfo234u", toJSON(iris[1, ]), "lsdkfj20934ujsdfl") %>% 
  find_JSON()
# [1] [{\"Sepal.Length\":5.1,\"Sepal.Width\":3.5,\"Petal.Length\":1.4,\"Petal.Width\":0.2,\"Species\":\"setosa\"}]


这可能不是一个完整的证明方法,但是我们创建一个模式来查找json并提取它怎么样

vals <- paste0("klsdjfo234u", toJSON(iris[1, ]), "lsdkfj20934ujsdfl")

lapply(stringr::str_extract_all(vals, '\\[\\{.*\\}\\]'), jsonlite::fromJSON)

#[[1]]
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4         0.2  setosa

vals这可能不是一个完整的证明方法,但是我们创建一个模式来查找json并提取它怎么样

vals <- paste0("klsdjfo234u", toJSON(iris[1, ]), "lsdkfj20934ujsdfl")

lapply(stringr::str_extract_all(vals, '\\[\\{.*\\}\\]'), jsonlite::fromJSON)

#[[1]]
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4         0.2  setosa
vals