如何解析带有 json 选项的 url?

how to parse a url with json options in it?

如标题所说,我正在尝试解析 url,如下所示:

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?)错误。

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

正如我在上面评论的那样,如果 URL 在 "hash" 或 "fragment identifier" 中有数据,您将不会得到预期的结果,即部分在 # 之后,因为 URL 的那部分没有通过 curl(或网络浏览器)发送到服务器。给定一个像 http://example.com/#!foo=bar 这样的 URL,curl 将只请求 http://example.com/。根据 RFC-3986,"the fragment identifier is separated from the rest of the URI prior to a dereference, and thus the identifying information within the fragment itself is dereferenced solely by the user agent."

但是,对于其他 URL,您可以将 HEREDOC 与 xargs 一起使用。 Curl 的 --globoff 选项阻止它解释方括号或大括号(否则 foo{bar,baz} 将使 curl 发出两个请求,一个用于 foobar,一个用于 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