我要做的事情是这样的!我要和一个C++对接!C++给传一个数据,我来进行处理,然后添加到Es中去,说白了也就是我写了一个接口!下面我们来看看我的代码!
首先C++给我的数据是这样的!
String jsonStr="
{
"bandWidth": {
"actualRecvBwApplication": 0,
"actualRecvBwAudio": 0,
"actualRecvBwMax:": 1534,
"actualRecvBwVideo:": 1534,
"actualSendBwApplication:": 0,
"actualSendBwAudio": 0,
"actualSendBwMax": 1905,
"actualSendBwVideo:": 1545,
"availRecvBwMax": 100000,
"availSendBwMax:": 1905,
"truelyNetData": true
},
"localdatetime": "2017-07-10T15:19:41",
"localtimestamp": 1499671181257,
"orgkey": "c71badcc543e4c968275025f1896ec5f",
"shaperInfo": {
"delayAppPriorityNormal": 0,
"delayAppPriorityRetransmit": 0,
"delayVideoPriorutyRetransmit": 0,
"delayVideoPriorytyNormal": 71,
"numDroppedAppPriorityNormal": 0,
"numDroppedVideoPriorytyNormal": 0,
"numFramesAppPriorityNormal": 0,
"numFramesVideoPriorytyNormal": 0,
"numPacketsAppPriorityNormal": 0,
"numPacketsAppPriorityRetransmit": 0,
"numPacketsVideoPriorutyRetransmit": 0,
"numPacketsVideoPriorytyNormal": 7,
"truelyRateShaperData": true
},
"vedioInfo": {
"decodedFrameRate": 29,
"displayedFrameRate": 29,
"height": 720,
"receivedFrameRate": 29,
"truelyParticipantData": true,
"width": 1280
}
}
";
"bandWidth": {
"actualRecvBwApplication": 0,
"actualRecvBwAudio": 0,
"actualRecvBwMax:": 1534,
"actualRecvBwVideo:": 1534,
"actualSendBwApplication:": 0,
"actualSendBwAudio": 0,
"actualSendBwMax": 1905,
"actualSendBwVideo:": 1545,
"availRecvBwMax": 100000,
"availSendBwMax:": 1905,
"truelyNetData": true
},
"localdatetime": "2017-07-10T15:19:41",
"localtimestamp": 1499671181257,
"orgkey": "c71badcc543e4c968275025f1896ec5f",
"shaperInfo": {
"delayAppPriorityNormal": 0,
"delayAppPriorityRetransmit": 0,
"delayVideoPriorutyRetransmit": 0,
"delayVideoPriorytyNormal": 71,
"numDroppedAppPriorityNormal": 0,
"numDroppedVideoPriorytyNormal": 0,
"numFramesAppPriorityNormal": 0,
"numFramesVideoPriorytyNormal": 0,
"numPacketsAppPriorityNormal": 0,
"numPacketsAppPriorityRetransmit": 0,
"numPacketsVideoPriorutyRetransmit": 0,
"numPacketsVideoPriorytyNormal": 7,
"truelyRateShaperData": true
},
"vedioInfo": {
"decodedFrameRate": 29,
"displayedFrameRate": 29,
"height": 720,
"receivedFrameRate": 29,
"truelyParticipantData": true,
"width": 1280
}
}
下面是我的处理代码
@RequestMapping(value = "/postdata" , method = RequestMethod.POST) public ResponseResult posts( HttpServletRequest request, String jsonStr) throws UnknownHostException { outputRequest(request); Map map1 = new LinkedHashMap<>(); if("".equals(jsonStr)){ return new ResponseResult(PaasExceptionDict.DataFormatError); } //System.out.println("++++++++++++++++++++++++++++++++++++++"+jsonStr); //解析json对象 Map map = new HashMap(); Gson gson = new Gson(); JSONObject jsonObject = JSONObject.parseObject(jsonStr); for (Map.Entry<String, Object> entry : jsonObject.entrySet()) { //System.out.println("#############"+entry.getKey()+"==== "+entry.getValue()); if("bandWidth".equals(entry.getKey())){ JSONObject jsonObject1 = JSONObject.parseObject(entry.getValue().toString()); for (Map.Entry<String, Object> entry1 : jsonObject1.entrySet()) { map.put(entry1.getKey(),entry1.getValue()); /*if("flase".equals(entry.getValue())){ return new ResponseResult(PaasExceptionDict.DataFormatError); }*/ } } if("vedioInfo".equals(entry.getKey())){ JSONObject jsonObject1 = JSONObject.parseObject(entry.getValue().toString()); for (Map.Entry<String, Object> entry1 : jsonObject1.entrySet()) { map.put(entry1.getKey(),entry1.getValue()); } } if("shaperInfo".equals(entry.getKey())){ JSONObject jsonObject1 = JSONObject.parseObject(entry.getValue().toString()); for (Map.Entry<String, Object> entry1 : jsonObject1.entrySet()) { map.put(entry1.getKey(),entry1.getValue()); } } if("orgkey".equals(entry.getKey())){ map.put(entry.getKey(),entry.getValue()); } if("localtimestamp".equals(entry.getKey())){ map.put(entry.getKey(),entry.getValue()); } if("localDateTime".equals(entry.getKey())){ map.put(entry.getKey(),entry.getValue()); } } long timestamp=new Date().getTime(); //System.out.println("时间戳是:"+timestamp); map.put("servertimestamp",timestamp); //时间戳转换成国际时间 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); String format1 = format.format(timestamp); map.put("serverDateTime",format1); String json = gson.toJson(map); //System.out.println("===================================== "+json); //添加数据 InsertDataEs(json); map1.put("json", json); return new ResponseResult(true,map1); }下面是我师傅的代码!
@RequestMapping(value = "/putdata" , method = RequestMethod.POST) public ResponseResult posts( HttpServletRequest request, @RequestBody Map<String,Object> data ) throws UnknownHostException { outputRequest(request); if(data==null){ System.out.println("data is null"); return new ResponseResult(false,false); } Gson gson=new Gson(); long timestamp=new Date().getTime(); //System.out.println("时间戳是:"+timestamp); data.put("servertimestamp",timestamp); //时间戳转换成国际时间 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); String format1 = format.format(timestamp); data.put("serverdatetime",format1); String json = gson.toJson(data); InsertDataEs(json); return new ResponseResult(true,true); }
下面就是公共的代码!
//添加数据 public ResponseResult InsertDataEs(String json) throws UnknownHostException { //System.out.println(json); TransportClient client; //连接client System.out.println("create TransportClient..."); client = new PreBuiltTransportClient(Settings.EMPTY) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(""), 9300)) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(""), 9300)) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(""), 9300)); IndexRequestBuilder indexRequestBuilder = client.prepareIndex("vdyoo", "desktop", "ID"+ IdentifierKeyHelper.getDateTimeLetterIdKey(5)).setSource(json); IndexResponse response = indexRequestBuilder.get(); //关闭client if (client != null) { client.close(); System.out.println("TransportClient close..."); } return new ResponseResult(PaasExceptionDict.InsertError); }我写了三四天!而且他别慢!
我的师傅写了三分钟!而且特别快!
我的内心是奔溃的!
希望和我一样菜的哥们赶紧学习吧!