How to convert map to url query string?

前端 未结 17 1569
盖世英雄少女心
盖世英雄少女心 2020-11-27 13:39

Do you know of any utility class/library, that can convert Map into URL-friendly query string?

Example:

I have a map:

\"param1\"=12,
\"param2         


        
17条回答
  •  青春惊慌失措
    2020-11-27 14:33

    Here's something that I quickly wrote; I'm sure it can be improved upon.

    import java.util.*;
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    
    public class MapQuery {
        static String urlEncodeUTF8(String s) {
            try {
                return URLEncoder.encode(s, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                throw new UnsupportedOperationException(e);
            }
        }
        static String urlEncodeUTF8(Map map) {
            StringBuilder sb = new StringBuilder();
            for (Map.Entry entry : map.entrySet()) {
                if (sb.length() > 0) {
                    sb.append("&");
                }
                sb.append(String.format("%s=%s",
                    urlEncodeUTF8(entry.getKey().toString()),
                    urlEncodeUTF8(entry.getValue().toString())
                ));
            }
            return sb.toString();       
        }
        public static void main(String[] args) {
            Map map = new HashMap();
            map.put("p1", 12);
            map.put("p2", "cat");
            map.put("p3", "a & b");         
            System.out.println(urlEncodeUTF8(map));
            // prints "p3=a+%26+b&p2=cat&p1=12"
        }
    }
    

提交回复
热议问题