如何用json选项解析一个url?

时间:2015-04-23 20:15:36

标签: json curl uri

就像标题所说的那样,我正在尝试解析如下的网址:

https://salzundbrot.com/suche/#!search={"s1":60,"s2":90,"r1":2,"r2":4,"f1":450,"f2":750,"c":3}&x=1&view=infotiles

curl抛出以下错误:

$ curl https://salzundbrot.com/suche/#!search={"s1":60,"s2":90,"r1":2,"r2":4,"f1":450,"f2":750,"c":3}&x=1&view=infotiles
-bash: !search={/"s1/": event not found

ruby​​的uri模块也无法处理它,抛出bad URI(is not URI?)错误。

单引号不起作用,转义双引号不起作用(相同的错误) - 肯定有办法做到这一点,但我找不到它。

1 个答案:

答案 0 :(得分:0)

正如我在上面评论的那样,你不会得到你期望的结果,你的网址包含“哈希”或“片段标识符”中的数据,即#之后的部分,因为URL的一部分不会通过curl(或Web浏览器)发送到服务器。给定http://example.com/#!foo=bar之类的网址,curl只会请求http://example.com/。根据RFC-3986,“片段标识符在取消引用之前与URI的其余部分分开,因此片段内的标识信息仅由用户代理取消引用。”

但是,对于其他网址,您可以将HEREDOC与xargs一起使用。卷曲的--globoff选项防止它解释括号或大括号(否则foo{bar,baz}将使卷曲使两个请求,一个为foobar,1为foobaz)。

$ xargs <<END curl --globoff
https://somesite.com/search/?search={"s1":55,"s2":90,"r1":2,"r2":4,"f1":450,"f2":775,"c":3}&x=1
END