我知道有几十个相似的主题,但我没有找到回答我的问题。
假设我有一个网址http://example.com/a/b?param1=1¶m2={"a": "b"}¶m3="&=+%"
+
时, =
和UriUril.encodeQuery
符号不会被编码。使用URLEncoder.encode
时,它们会被编码,但在这种情况下,我必须单独编码每个参数值(因此我需要获取参数及其值的映射)。如您所见,简单地在&
或=
上拆分网址字符串并不起作用。
那么如何通过应用更少的努力来克服这项任务呢?
答案 0 :(得分:1)
答案 1 :(得分:0)
通过准备适当的正则表达式来解析参数及其值,我找到了解决问题的方法。也许解决方案不是那么优雅,但它解决了我的问题。
因此,假设{}
包含可能包含内部符号的符号,""
也是这样的符号(除了它们不能包含在内部),正则表达式如下所示:
((\w+)=(\{.*?\}(?=&)|\{.*\}|".*"|\w+))&{0,1}
此类正则表达式的输入必须是url的查询字符串。在每个第2组中,将有参数名称,在每个第3组中 - 参数值