由于近些日子公司在弄微信项目,而微信官方API所提供的接口当中,有些需要以POST方式进行请求,且数据传输格式要求为JSON格式数据,之前没怎么研究过,而且传递的数据格式相对也比较简单,所以直接都是采用的字符串拼接的方式进行组装的,之后再用String.format格式化一下就好了。
//需要提交的json数据
String jsonData = "{\"openid\":\"%s\",\"to_groupid\":%d}";
//调用接口移动用户分组
JSONObject jsonObject = WeixinUtil.httpRequest(requestUrl, "POST", String.format(jsonData, openId,groupId));
但是,今天用到消息模板接口的时候,发现POST请求的数据有点多,如果还是用这种方式就显得有些麻烦了,而且也不是很直观,需要对双引号做转义操作,有的时候转多了看着就头晕。所以特定查了一翻资料自己研究了一下。
首先,因为要用到json,所以项目中先要导入json开发工具包,用于Java对象和Json字符串之间的转换;
json开发工具包一共有3个jar:ezmorph-1.0.6.jar,json-lib-2.2.3-jdk13.jar和morph-1.1.1.jar。
这三个jar工具包已经上传至CSDN。有需要的话可以去下载:
http://download.csdn.net/detail/hu1991die/8401677
示例代码:
package com.json;
import java.util.Iterator;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
* Java操作JSON格式数据
* @author feizi
* @time 2015-1-27下午5:36:13
*/
public class TestJSON {
public static void main(String[] args) {
//jsonObject:{"right":"right","left":"left","obj":{"second":"222","third":"333"},"ele":{"four":"444","five":"555"},"data":[{"name":"张三","age":"23","sex":"男"},{"name":"李三","age":"20","sex":"女"}]}
JSONObject jsonObject = TestJSON.createJSONObject();
// 输出jsonobject对象
System.out.println("jsonObject:" + jsonObject);
// 根据key返回一个字符串
String right = jsonObject.getString("right");
System.out.println("right==>" + right); //right==>right
JSONObject obj = (JSONObj