org.apache.http.message.BasicNameValuePair是apache-mime4j-0.5.jar开源包中类,主要是封装网络传输参数的。
如果不用可以不用以下方法:
public static ArrayList<BasicNameValuePair> getHttpParamsByBean(Object bean)
import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.gzi.helper.Utils; public class UtilJSON extends BeanUtils { private static class JSONHolder { public boolean isHttpParam = true; public boolean isList = false; public String httpParamName; public Class listClass; public JSONHolder(Field field) { // 根据注释获取属性对应的列名 JSON json = field.getAnnotation(JSON.class); if (json != null) { if (!json.value().equals(JSON.defaultHttpParamName)) httpParamName = json.value(); else httpParamName = field.getName(); isHttpParam = json.isHttpParam(); isList = json.isList(); if(isList) listClass=json.listClass(); } else { // 没有注释则根据属性名小写化后的名字作列名 httpParamName = field.getName(); } } } /** * 根据json对象生成对应的bean。 * * @param json * @param bc * @return * @throws BeanException */ public static <T> T createBeanByJson(JSONObject json, Class<T> bc) throws BeanException { T bean = newBeanByClass(bc); Object value = null; if (json != null) { Field[] fs = bc.getDeclaredFields(); JSONHolder ch = null; //bean = newBeanByClass(bc); // 给bean实例赋值 for (Field f : fs) { ch = new JSONHolder(f); if (!ch.isHttpParam) continue; try { if (!ch.isList) value = getValueByField(json, f, ch); else { JSONArray jarray = json.getJSONArray(ch.httpParamName); if (jarray != null) { value =createBeanListByJson(jarray, ch.listClass); } } } catch (JSONException e) { // TODO Auto-generated catch block throw new BeanException("createBeanByJson:获取数据错误", e); } if (value == null) continue; setFieldValue(f, value, bean); } } return bean; } public static <T> List<T> createBeanListByJson(JSONArray list, Class<T> bc) throws BeanException { int size = list.length(); List<T> beanList = new ArrayList<T>(size); for (int i = 0; i < size; i++) { try { beanList.add(createBeanByJson(list.getJSONObject(i), bc)); } catch (JSONException e) { // TODO Auto-generated catch block throw new BeanException("createBeanListByJson:获取JSONObject错误", e); } } return beanList; } /** * 根据field类型,从json中取值。可以递归处理非集合类型。 * * @param json * @param field * @param ch * @return * @throws BeanException * @throws JSONException */ private static Object getValueByField(JSONObject json, Field field, JSONHolder ch) throws BeanException, JSONException { if (json == null) return null; String pn = ch.httpParamName; Class fieldClass = field.getType(); // 根据属性类型从Cursor中获取值 if (fieldClass == String.class) return json.getString(pn); else if (fieldClass == int.class || fieldClass == Integer.class) return json.getInt(pn); else if (fieldClass == Date.class) { try { return Utils.parseChinaDate(json.getString(pn), "yyyy-MM-dd HH:mm:ss"); } catch (Exception e) { // TODO Auto-generated catch block throw new BeanException("Date类型转换错误", e); } } else if(fieldClass==boolean.class||fieldClass==Boolean.class){ String v=json.getString(pn); if(v.toLowerCase().equals("y")||v.toLowerCase().equals("true")) return true; else return false; } else if (fieldClass == Long.class||fieldClass==long.class) return json.getLong(pn); else if (fieldClass == Double.class) return json.getDouble(pn); else if (fieldClass == Float.class) return Float.parseFloat(json.getString(pn)); else if (fieldClass == Short.class) return Short.parseShort(json.getString(pn)); else { // 不为基础类,当做自建类来递归处理。 String jstr = json.getString(pn); if (!jstr.equals("null")) { JSONObject j = json.getJSONObject(pn); if (j != null) { return createBeanByJson(j, fieldClass); } } } return null; } /** * 根据Bean生成网络要用的参数列表 * * @param bean * @return * @throws BeanException */ public static ArrayList<BasicNameValuePair> getHttpParamsByBean(Object bean) throws BeanException { ArrayList<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>(); JSONHolder ch = null; String pn = null; Object value = ""; Field[] fs = bean.getClass().getDeclaredFields(); for (Field f : fs) { ch = new JSONHolder(f); if (!ch.isHttpParam) continue; pn = ch.httpParamName; value = getFieldValue(bean, f); if (value == null) continue; params.add(new BasicNameValuePair(pn, getString(value, f))); } return params; } public static String getString(Object v, Field f) { if (v == null) return ""; Class fieldClass = f.getType(); // 根据属性类型为values赋值 if (fieldClass == String.class) return (String) v; return v.toString(); } }