将R字符串中的单个反斜杠更改为有效的JSON字符串
我在R中有一个字符串,它不带引号:将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("\
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您的原始字符串中没有任何反斜杠,这就是它没有更改我的字符串的原因。问题在别处。