将R字符串中的单个反斜杠更改为有效的JSON字符串

将R字符串中的单个反斜杠更改为有效的JSON字符串,json,regex,r,Json,Regex,R,我在R中有一个字符串,它不带引号: my_text = {\"stim\":[\"platery\",\"denial\",\"generic\"]} 使用cat()时,我得到: {"stim":["platery","denial","generic"]} 现在,我的整个字符串是一个需要解析的JSON字符串,它的计算结果无效。如果我复制并粘贴cat()版本,这是一个有效的JSON,因此我想我只是错过了一些预处理 我看到这篇文章,所以我尝试用双引号替换JSON解析器的单引号: gsub("\

我在R中有一个字符串,它不带引号:

my_text = {\"stim\":[\"platery\",\"denial\",\"generic\"]}
使用
cat()
时,我得到:

{"stim":["platery","denial","generic"]}
现在,我的整个字符串是一个需要解析的JSON字符串,它的计算结果无效。如果我复制并粘贴
cat()
版本,这是一个有效的JSON,因此我想我只是错过了一些预处理

我看到这篇文章,所以我尝试用双引号替换JSON解析器的单引号:

gsub("\\\\", "\\\\\\\\", my_text, fixed=TRUE)

但它并没有像我想的那样改变我的字符串。如何将字符串更改为有效的JSON?

正如Wiktor所说,您的gsub无法工作,因为您正在尝试替换反斜杠,但字符串中没有任何反斜杠。R只是使用反斜杠来存储双引号。第三个SO-post-you链接很好地解释了解决这个问题的R字符串文本。R中的反斜杠存储为双反斜杠

我的第一条建议是使用R包
jsonlite
从R对象而不是字符串(如果可能的话)构造JSON()

例如:

myJSON <- jsonlite::toJSON(list(stim=c("platery","denial","generic")))
# {"stim":["platery","denial","generic"]}

myJSON您的原始字符串中没有任何反斜杠,这就是它没有更改我的字符串的原因。问题在别处。