`
liudunxu2
  • 浏览: 32210 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

api param参数转换为hashmap java

 
阅读更多
/**
	 * 根据api参数字符串获取api参数映射
	 * @param url
	 * @return
	 */
	public static HashMap<String, String> GetApiParamMap(String url){
		HashMap<String, String> paramsMap = new HashMap<String, String>();
		if(!StringUtils.isEmpty(url)){
			String[] keyVlauePairAry = url.split("&");
			for (String keyVlauePair : keyVlauePairAry) {
				if (StringUtils.isNotBlank(keyVlauePair)) {
					int equalIndex = keyVlauePair.indexOf('=');
					 if(equalIndex==-1 || equalIndex>=keyVlauePair.length()-1) continue;
					 String titleString = keyVlauePair.substring(0, equalIndex);
					 String titleValueString = keyVlauePair.substring(equalIndex+1,keyVlauePair.length());
					 paramsMap.put(titleString,titleValueString);
				}
			}
		}
		return paramsMap;
	}

netty中的实现

 private Map<String, List<String>> decodeParams(String s) {
        Map<String, List<String>> params = new LinkedHashMap<String, List<String>>();
        String name = null;
        int pos = 0; // Beginning of the unprocessed region
        int i;       // End of the unprocessed region
        char c = 0;  // Current character
        for (i = 0; i < s.length(); i++) {
            c = s.charAt(i);
            if (c == '=' && name == null) {
                if (pos != i) {
                    name = decodeComponent(s.substring(pos, i), charset);
                }
                pos = i + 1;
            } else if (c == '&') {
                if (name == null && pos != i) {
                    // We haven't seen an `=' so far but moved forward.
                    // Must be a param of the form '&a&' so add it with
                    // an empty value.
                    addParam(params, decodeComponent(s.substring(pos, i), charset), "");
                } else if (name != null) {
                    addParam(params, name, decodeComponent(s.substring(pos, i), charset));
                    name = null;
                }
                pos = i + 1;
            }
        }

        if (pos != i) {  // Are there characters we haven't dealt with?
            if (name == null) {     // Yes and we haven't seen any `='.
                addParam(params, decodeComponent(s.substring(pos, i), charset), "");
            } else {                // Yes and this must be the last value.
                addParam(params, name, decodeComponent(s.substring(pos, i), charset));
            }
        } else if (name != null) {  // Have we seen a name without value?
            addParam(params, name, "");
        }

        return params;
    }

    private static String decodeComponent(String s, Charset charset) {
        if (s == null) {
            return "";
        }

        try {
            return URLDecoder.decode(s, charset.name());
        } catch (UnsupportedEncodingException e) {
            throw new UnsupportedCharsetException(charset.name());
        }
    }

    private static void addParam(Map<String, List<String>> params, String name, String value) {
        List<String> values = params.get(name);
        if (values == null) {
            values = new ArrayList<String>(1);  // Often there's only 1 value.
            params.put(name, values);
        }
        values.add(value);
    }


分享到:
评论

相关推荐

    json struts2转换

    2. **Action类中的JSON注解**:为了将Action方法的返回值转换为JSON,可以使用`@Result`注解来指定`type="json"`,或者在类级别使用`@Results`注解。例如: ```java @Results({@Result(name="success", type="json")...

    Java基础知识小结

    - `Integer.parseInt(String)`:将字符串解析为整型数值,需确保字符串能转换为有效的整数。 - `Integer.valueOf(String)`:同样用于字符串到整数的转换,与`parseInt`类似。 - `String.valueOf(int)`:将整数...

    Java操作mongoDB使用文档.docx(16页.docx

    创建一个`Map`对象,将数据放入其中,然后将其转换为`DBObject`: ```java Map, String&gt; data = new HashMap(); data.put("key", "value"); DBObject dbObject = new BasicDBObject(data); DBCollection dbcol = ...

    javadoc-6.0.1

    《Java API文档详解——以javadoc-6.0.1为例》 在编程领域,Java API(Application Programming Interface)是开发者进行程序设计的重要参考资源,它详细定义了Java语言的各种类、接口、方法以及它们的功能和用法。...

    图片带参数上传(android)

    接下来,我们要将图片转换为适合上传的格式,通常是Bitmap或Base64编码的字符串。这里我们使用Bitmap: ```java Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(selectedImage)...

    IT java 面试题库

    ### IT Java面试题库知识点详解 #### 一、面向对象语言特性 1. **描述一下“Java中面向对象几个典型的面向对象特性”?** - **封装**: 封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息...

    Java语言编程规范--华为技术有限公司

    - Javadoc:使用`/** */`为类、接口和方法生成文档,遵循`@param`、`@return`、`@throws`等标签。 3. **代码结构** - 每个类应有明确的职责,遵循单一职责原则(SRP)。 - 使用接口定义行为,实现类提供具体实现...

    JdbcTemplate.rar

    - **Map参数**:`MapSqlParameterSource`或`HashMap`作为参数。 - **Java Bean参数**:使用`BeanPropertySqlParameterSource`。 ### 6. **事务管理** JdbcTemplate提供了`executeWithinTransaction`方法,用于在...

    利用java生成二维码工具类示例代码

    它首先创建一个JSONObject,将这些信息存储为键值对,然后将JSON对象转换为字符串。接着,使用`MultiFormatWriter`创建`BitMatrix`对象,其中包含二维码的黑白点信息。最后,将`BitMatrix`转换为`BufferedImage`,并...

    使用FineReport报表二次开发详述

    这里的`stuff.cpt`文件是通过FineReport设计器生成的模板文件,通过`TemplateImporter`类的`generate`方法可以将其转换为`WorkBook`对象,进而用于进一步的数据处理。 **保存成模板文件** ```java // CPT // 清空...

    Android应用源码之调用安卓自带文本朗读.zip

    Android系统内置了TTS引擎,它能够将文本转换为合成语音。开发者可以通过调用相关的API来实现这一功能。首先,需要在应用中添加对应的权限声明,如在AndroidManifest.xml中加入`...

    Android代码-安卓语音合成

    在Android平台上,语音合成(Speech Synthesis)是一种技术,它允许应用程序将文本转换为自然语言的音频输出。这个过程也被称为TTS(Text-to-Speech)。Android提供了内置的支持来实现这个功能,使得开发者能够轻松...

    spring自带的jdbcTemplate查询、插入预编译使用

    `是预编译的占位符,`params`数组包含了实际参数,`MyRowMapper`是一个自定义的映射器,用于将查询结果转换为Java对象。 接下来,让我们看看如何使用`jdbcTemplate`进行预编译的插入操作。`update()`方法可以用来...

    struts2要使用json必须的两个包

    例如,你可以将Java的HashMap、ArrayList等数据结构轻松地转换成JSON字符串,或者将接收到的JSON字符串解析成Java对象。`json-lib`库支持多种版本的JDK,这里的`-jdk15.jar`版本意味着它是为JDK1.5编译的,确保了与...

    springboot访问https最完整的代码

    **解析**:此方法接收一个键值对 Map 作为输入,并将其转换为一系列 `NameValuePair` 对象组成的列表。这些对象将在后续的 HTTP 请求中作为查询字符串或 POST 数据传递。 ##### 2. HTTPS 请求初始化 ```java ...

    spring整合mysql的一些基本操作

    10. **异常处理**:Spring会捕获JDBC抛出的异常,并转换为更具体的Spring的DataAccessException,便于统一处理。 11. **DAO层设计**:通常,我们会创建一个DAO接口,如`UserDao`,并提供增删改查的方法。然后使用...

    Android 调用安卓自带文本朗读-IT计算机-毕业设计.zip

    TTS服务可以将字符串转换为流式音频,提供多种语言和发音风格供用户选择。首先,需要在AndroidManifest.xml中添加必要的权限: ```xml ``` 2. 初始化TTS引擎: 在应用程序中,我们需要创建一个`TextToSpeech`...

    调用安卓自带文本朗读.zip

    在Android系统中,文本朗读(Text-to-Speech, TTS)是一项重要的辅助功能,它允许应用程序将文本转换为语音输出,对视力障碍或者阅读困难的用户尤其有用。本资源"调用安卓自带文本朗读.zip"可能包含了关于如何在...

    struts 2.0 与 2.1 需要的json插件

    JSON插件为Struts 2提供了将Action结果直接转换为JSON对象的能力,这在构建AJAX(Asynchronous JavaScript and XML)应用或需要返回JSON响应的API时非常有用。下面我们将详细探讨Struts 2的JSON支持以及如何配置和...

    JavaDocumentation

    Java Documentation 是Java编程语言的重要组成部分,它为开发者提供了详尽的API参考和使用指南,帮助他们理解和使用Java类库。这份文档通常包含了类、接口、方法、构造函数等的详细说明,以及示例代码,是Java开发者...

Global site tag (gtag.js) - Google Analytics