转自其他网上,出现了以下情况,导致json格式不能识别,@jsonproperty的注解使用无效
json内容{“Name”:“bill”,“Age”,“25”},
有Person类
public class Person{
private String Name;
private String Age;
// get & set 方法
……
}
现在想将json内容转为Person对象,代码如下
public class JsonFormat { public static JSONObject transToLowerObject(JSONObject jSONArray1) { JSONObject jSONArray2 = new JSONObject(); Iterator it = jSONArray1.keys(); while (it.hasNext()) { String key = (String) it.next(); Object object = jSONArray1.get(key); if (object.getClass().toString().endsWith("String")) { jSONArray2.accumulate(key.toLowerCase(), object); // key.toLowerCase()是例如将Name转化为name全小写 // jSONArray2.accumulate(key.substring(0,1)+key.substring(1), object); 将首字母小写 } else if (object.getClass().toString().endsWith("JSONObject")) { jSONArray2.accumulate(key.toLowerCase(), transToLowerObject((JSONObject) object)); } else if (object.getClass().toString().endsWith("JSONArray")) { jSONArray2.accumulate(key.toLowerCase(), transToArray(jSONArray1.getJSONArray(key))); } else { jSONArray2.accumulate(key.toLowerCase(), object.toString()); // 处理字段不是string型(例如Integer型),转为string型 } } return jSONArray2; } public static JSONArray transToArray(JSONArray jsonArray) { JSONArray jSONArray2 = new JSONArray(); for (int i = 0; i < jsonArray.length(); i++) { Object jArray = jsonArray.getJSONObject(i); if (jArray.getClass().toString().endsWith("JSONObject")) { jSONArray2.put(transToLowerObject((JSONObject) jArray)); // jSONArray2.add(transToLowerObject((JSONObject) jArray)); // 此处一个put,一个add分别对应org.json包和net.sf.json的jar包,具体到时试 } else if (jArray.getClass().toString().endsWith("JSONArray")) { jSONArray2.put(transToArray((JSONArray) jArray)); } } return jSONArray2; } }
使用方法JsonFormat.transToLowerObject(json对象)或者JsonFormat.transToArray(json数组)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)