判断数据是否是JSON 发表于 2017-08-21 21:08:17 | 分类于 后端开发 | 字数统计 62 | 阅读时长 0 123456789101112131415161718192021import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; /** * 判断是不是json * 暴力解析:Alibaba fastjson * @param test * @return */ public final static boolean isJSONValid(String test) { try { JSONObject.parseObject(test); } catch (JSONException ex) { try { JSONObject.parseArray(test); } catch (JSONException ex1) { return false; } } return true; } 阅读全文 »
Jackson序列化对象的过滤 发表于 2017-08-20 19:08:18 | 分类于 后端开发 | 字数统计 152 | 阅读时长 0 参数选项 Include.NON_DEFAULT 属性为默认值不序列化 Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化 Include.NON_NULL 属性为NULL 不序列化 方法过滤 1234567891011121314151617import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonProcessingException; /** * jackson to fastjson * * @param obj * @return */ public static Object NON_DEFAULT(Object obj) { try { obj = new ObjectMapper().setSerializationInclusion(Include.NON_DEFAULT).writeValueAsString(obj); } catch (JsonProcessingException e) { e.printStackTrace(); } return obj; } 注解过滤 1234567import com.fasterxml.jackson.annotation.JsonInclude; public class APIResultBean<T> implements Serializable{ private static final long serialVersionUID = 1L; // 过滤空值 @JsonInclude(JsonInclude.Include.NON_DEFAULT) private T data; } 阅读全文 »
通过API发送消息给EMQTT代理服务器 发表于 2017-08-19 00:08:00 | 分类于 万物互联 | 字数统计 546 | 阅读时长 2 Http Post To EMQTT 封装 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpPost; import org.apache.http.conn.ConnectionRequest; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.params.CoreConnectionPNames; import org.apache.http.util.EntityUtils; public static void httpAPIPublishMqttPayload(String json) { final Base64.Encoder encoder = Base64.getEncoder(); byte[] textByte; // 编码 String encodedText=null; try { textByte = "admin:public".getBytes("UTF-8");//对账号和密码进行编码 encodedText = encoder.encodeToString(textByte);// 编码 } catch (UnsupportedEncodingException e) { e.printStackTrace(); } RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(3000).build(); HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build(); HttpPost httppost = new HttpPost(“http://yibuwulianwang.com:18000/api/v2/mqtt/publish”); httppost.setHeader("Authorization", "Basic " + encodedText); httppost.setHeader("Content-Type", "application/json"); // httppost.setHeader("Content-Length", String.valueOf(postStrBytes.length)); String postjson = JSON.toJSONString(“json”));//payload json // 构建消息实体 StringEntity entity = new StringEntity(postjson, Charset.forName("UTF-8")); entity.setContentEncoding("UTF-8"); // 发送json格式的请求 entity.setContentType("application/json"); httppost.setEntity(entity); HttpResponse response; try { response = httpClient.execute(httppost); // 消息返回码 int statusCode = response.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { System.out.println("REQUEST EMQTT HTTP API ERR:" + statusCode); } else { System.out.println("REQUEST EMQTT HTTP API SUCCESS:" + statusCode); } HttpEntity httpEntity = response.getEntity(); String result = null; if (httpEntity != null) { result = EntityUtils.toString(httpEntity, "utf-8"); EntityUtils.consume(httpEntity); System.out.println("EMQTT HTTP API RESPONSE RESULT:"+result); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } Http Post 封装 1234567891011121314151617181920212223242526272829303132import java.io.IOException; import java.nio.charset.Charset; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; public void postAPI(String url, Object json) { RequestConfig config = RequestConfig.custom().setConnectTimeout(35000).setConnectionRequestTimeout(35000) .setSocketTimeout(60000).build(); HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build(); HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Content-Type", "application/json"); String postjson = JSON.toJSONString(json); System.out.println("请求接口( " + url + " )的数据:\n" + postjson); StringEntity entity = new StringEntity(postjson, Charset.forName("UTF-8")); entity.setContentEncoding("UTF-8"); entity.setContentType("application/json"); httpPost.setEntity(entity); try { HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); String result = EntityUtils.toString(httpEntity, "utf-8"); EntityUtils.consume(httpEntity); System.out.println("接口( " + url + " )响应的数据:\n" + result); } catch (IOException e) { e.printStackTrace(); } } 阅读全文 »
EMQTT 发表于 2017-07-08 16:07:29 | 分类于 万物互联 | 字数统计 49 | 阅读时长 0 EMQTT 是一个MQTT代理服务器 下载编译之后的软件包 12wget http://emqtt.com/static/brokers/emqttd-ubuntu16.04-v2.3.6.zip sudo unzip emqttd-ubuntu16.04-v2.3.6.zip 打开 1./emqttd/bin/emqttd start 关闭 1./emqttd/bin/emqttd stop 查询状态 1./emqttd/bin/emqttd_ctl status 阅读全文 »
树莓派Python实现超声波测距+人体红外报警+温湿度+LED灯 发表于 2017-06-06 22:06:30 | 分类于 万物互联 | 字数统计 2418 | 阅读时长 12 硬件模块 Raspberry Pi 3 超声波测距模块 HY-SRF05 人体红外传感器模块 HC-SR501 温湿度模块 DHT11 LED灯模块 阅读全文 »
SpringMVC分层思想 发表于 2017-05-15 12:05:49 | 分类于 后端开发 | 字数统计 333 | 阅读时长 1 DAO层 数据持久层/数据访问层 对外提供统一的数据操作接口 可以使数据库操作,可以是文件操作,也可以使缓存操作 专注于数据业务的处理 阅读全文 »