我试图将一些内联JSON缩小为HTML minifier的一部分。我该怎么做:
> {"@context": "http://schema.org", "@type": "WebSite"} <
进入这个:
>{ "@context": "http://schema.org", "@type": "WebSite" }<
我已经尝试gsub[/\", \s+\"/, ", "]
,gsub[/"\"}"/, "\" }"]
和gsub[/"\"}"/, "\" }"]
,但错误已经出来。
syntax error, unexpected [, expecting ']' (SyntaxError)
[/"\"}"/, "\" }"]
^
syntax error, unexpected ',', expecting keyword_end
syntax error, unexpected ',', expecting keyword_end
syntax error, unexpected ']', expecting keyword_end
我现在也试过这些,但没有好处:
[/>\s+{/, ">{ "] # > { => >{
[/}\s+>/, " }<"] # } < => }<
[%r/{"/, '{ %r/"'] # {" => { "
[%r/"}/, '%r/" }'] # "} => " }
[%r/",\s+/, ", "] # , " => , "
导致:
syntax error, unexpected [, expecting ']' (SyntaxError)
[/}\s+>/, " }<"] # } < => }<
^
答案 0 :(得分:4)
我建议采用不同的方法:
require JSON
str = '{"@context": "http://schema.org", "@type": "WebSite"}'
new_str = JSON.parse(str).to_json
puts new_str
> {"@context":"http://schema.org","@type":"WebSite"}
答案 1 :(得分:1)
使用%r Regexp文字来转义所有字符,但只有一个:
a = '{"@context": "http://schema.org", "@type": "WebSite"}'
a.gsub(%r/{"/, '{ "').gsub(%r/"}/, '" }').gsub(/\s+/, ' ')
#=> { "@context": "http://schema.org", "@type": "WebSite" }
使用%r{ ... }
转义除{
和}
之外的所有字符,同样适用于/
,(
等...
答案 2 :(得分:-1)