微信订阅号开发过程中遇到的问题及解决办法。

1、在写用户管理-黑名单这个功能的时候微信返回的一直是{"errcode": 0,"errmsg": "ok"},可获取黑名单列表的时候就是没有用户。这个问题纠结了好久,换了好几种方法还是不行。最后发现原来微信的开发文档写错了,上面写的是openid_list,而下面写的是opened_list。所以一直没有拉黑成功,也怪我没有仔细看。。

2、还是用户管理,批量拉黑粉丝。把openIds传过来的时候,需要转成这个字符串{"opened_list":["OPENID1”,” OPENID2”]} ,可总是报No ObjectCodec defined for the generator, can only serialize simple wrapper type。原因就是获取jsonGenerator的方式,必须使用objectMapper.getJsonFactory().createJsonGenerator(stringWriter);这个方法才可以。但是jackson的最新版本这个方法已经停用了,只好谷歌了。终于找到了解决办法,附上链接地址。http://www.concretepage.com/forum/thread?qid=335

	protected JsonGenerator getJsonGenerator(Writer writer) throws IOException {
		JsonFactory jfactory = new JsonFactory();
		JsonGenerator jsonGenerator  = jfactory.createGenerator(writer);
		jsonGenerator.setCodec(getObjectMapper());
		return jsonGenerator;
	}

	public String encodeBatchSetBlackList(List<String> openIds)throws WeixinException, IOException {

		try {
			
			StringWriter writer = new StringWriter();

			JsonGenerator jsonGenerator = getJsonGenerator(writer);

			jsonGenerator.writeStartObject();//{
			
			jsonGenerator.writeObjectField("openid_list", openIds);
			
			jsonGenerator.writeEndObject();//}

			jsonGenerator.close();
			
			return writer.toString();
		} catch (JsonGenerationException e) {
			throw new WeixinException(ErrorCode.ENCODE_JSON_ERROR, e);
		} 
	}

3、对于微信返回的JSON数据包,如果可以直接json转bean那最好,还有一些特殊的例如批量获取用户基本信息的json数据。可以先获取userList。然后再循环这个list,分别把objNode转为User,然后添加到listuser里面。

{
  "user_info_list": [
      {
          "subscribe": 1, 
          "openid": "otvxTs4dckWG7imySrJd6jSi0CWE", 
          "nickname": "iWithery", 
          "sex": 1, 
          "language": "zh_CN", 
          "city": "Jieyang", 
          "province": "Guangdong", 
          "country": "China", 
          "headimgurl": "http://wx.qlogo.cn/mmopen/xbIQx1GRqdvyqkMMhEaGOX802l1CyqMJNgUzKP8MeAeHFicRDSnZH7FY4XB7p8XHXIf6uJA2SCun
TPicGKezDC4saKISzRj3nz/0",
          "subscribe_time": 1434093047, 
          "unionid": "oR5GjjgEhCMJFyzaVZdrxZ2zRRF4", 
          "remark": "", 
          "groupid": 0,
          "tagid_list":[128,2]
      }, 
      {
          "subscribe": 0, 
          "openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg", 
          "unionid": "oR5GjjjrbqBZbrnPwwmSxFukE41U", 
      }
  ]
}
JsonNode jsonNode = getObjectMapper().readTree(json);
			JsonNode userList = jsonNode.path("user_info_list");
			
			List<User> listUser = new ArrayList<User>();
			
			for(JsonNode objNode : userList){
				listUser.add(getObjectMapper().readValue(objNode.toString(),User.class));
			}




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值