实训第二周。
将图片传到远程服务器上进行处理,并且可以得到返回结果。
所以这一周对传回的json进行处理。
先创建一个类,存储时间和表情等数据
package request;
import org.json.JSONObject;
public class stamp_struct {
public String date;
public JSONObject jsonobject;
public stamp_struct(String date,JSONObject jsonobject)
{
this.date=date;
this.jsonobject=jsonobject;
}
public String toString()
{
return ""+date+":"+jsonobject.toString();
}
}
再创建一个类,对json进行解析,最后存在List中
package request;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import key.key;
import post_and_request.api;
//本类继承自request_json
public class request_json2 extends request_json{
public List<stamp_struct> getlist2(String str,String date) throws InterruptedException
{
List<stamp_struct> jsonobject=new ArrayList<stamp_struct>();
//将返回的值放在jsonobj中
JSONObject jsonobj=new JSONObject(str);
JSONArray jsonlist=jsonobj.getJSONArray("faces");
List<stamp_struct> rest_pic=new ArrayList<stamp_struct>();
//
for (int m = 0; m < jsonlist.length(); m++) {
// 将可以判断的人脸结果存在jsonobject里
jsonobject.add(new stamp_struct(date, jsonlist.getJSONObject(m)));
}
return jsonobject;
}
public List<stamp_struct> getlist(String str,String date) throws InterruptedException
{
List<stamp_struct> jsonobject=new ArrayList<stamp_struct>();
//将返回的值放在jsonobj中
JSONObject jsonobj=new JSONObject(str);
JSONArray jsonlist=jsonobj.getJSONArray("faces");
List<stamp_struct> rest_pic=new ArrayList<stamp_struct>();
//先取出最大的5张人脸
for(int m=0;m<jsonlist.length();m++)
{
if(m<5)
{
//将可以判断的人脸结果存在jsonobject里
jsonobject.add(new stamp_struct(date,jsonlist.getJSONObject(m)));
}
else
{
//判断不了的存在rest_pic中
rest_pic.add(new stamp_struct(date,jsonlist.getJSONObject(m)));
}
}
//调用写好的函数,来将剩下的人脸进行判断
request_json request_json2=new request_json();
//进行循环判断
for(int m=0;m<rest_pic.size();m=m+5)
{
//每次循环list的值会更新
ArrayList<String> list=new ArrayList<String>();
//当剩下的不足5张脸
if(m+5>rest_pic.size())
{
for(int m2=m;m2<rest_pic.size();m2++)
{
try {
list.add(rest_pic.get(m2).jsonobject.getString("face_token"));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}//剩下的还能够凑够5个人脸
else
{
for(int m2=0;m2<5;m2++)
{
try {
list.add(rest_pic.get(m+m2).jsonobject.getString("face_token"));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
//进行判断存在list中的人脸
JSONObject js2=new JSONObject(request_json2.
get_analyse(list, api.analysis_api_url, key.key, key.Secret));
//如果并发过快
try{
if(js2.getString("error_message")==null)
{
Thread.sleep(1000);
js2=new JSONObject(request_json2.
get_analyse(list, api.analysis_api_url, key.key, key.Secret));
}
}
catch(Exception e)
{
}
//System.out.println(js2.toString());
//将返回的结果取出来
JSONArray json_List=js2.getJSONArray("faces");
//将返回的结果放在jsonobject中
for(int n=0;n<json_List.length();n++)
{
jsonobject.add(new stamp_struct(date,json_List.getJSONObject(n)));
}
}
//将结果返回
return jsonobject;
}
}