java中Integer类型的数的值是null,转为json对象,再转回就变成0,如何将转回的数据的默认值设为null 30

例如解决下面的问题:当输出年龄时结果为0Studentst=newStudent();st.setage(null);st.setname("小红");Objectjso... 例如解决下面的问题:当输出年龄时结果为0
Student st=new Student ();
st.setage(null);
st.setname("小红");
Object json = JSONObject.fromObject(st);
JSONObject dddd = JSONObject.fromObject(json);
Student sutdent=(Student) JSONObject.toBean(dddd,Student.class);
System.out.println(sutdent.getage);
展开
 我来答
夕阳残絮
2017-07-26
知道答主
回答量:8
采纳率:100%
帮助的人:2.3万
展开全部
json-lib-2.3-jdk15,commons-logging-1.1.1,ezmorph-1.0.6,commons-collections-3.2.1,commons-beanutils-1.8.1,commons-lang-2.5-sources
package zhaozh.test;
/**
*
* @author zhaozh 2010-11-8 下午11:04:43
*
*/
public class QueryMeta {
private String operator;
private String leftKey;
private Object rightValues;

public static final String OP = "operator";
public static final String LEFT = "leftkey";
public static final String RIGHT = "rightValues";
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public String getLeftKey() {
return leftKey;
}
public void setLeftKey(String leftKey) {
this.leftKey = leftKey;
}
public Object getRightValues() {
return rightValues;
}
public void setRightValues(Object rightValues) {
this.rightValues = rightValues;
}
public String valueof(){
return leftKey + operator + rightValues;
}
}
package zhaozh.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
import net.sf.json.util.PropertySetStrategy;
import org.apache.commons.collections.map.SingletonMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
*
* @author zhaozh 2010-11-9 下午10:32:11
*
*/
public class JsonTest {
※※※※private static final Log log = LogFactory.getLog(JsonTest.class);
private static Map<String, String> opMap = new HashMap<String, String>();
static{
opMap.put("accbook", "=");
opMap.put("vouchertype", "=");
opMap.put("voucherno", "=");
opMap.put("preparedate", "=");
}

/**
* @param args
* 两种转换的方法:JSONObject.toBean,JSONSerializer.toJava
*/
public static void main(String[] args) {
JsonTest jsonTest = new JsonTest();
JSONArray json = jsonTest.createJSON();
json = jsonTest.restorJSON(json.toString());
Iterator it = json.iterator();
while(it.hasNext()){
※ JSONObject jsonObject = (JSONObject) it.next();
※ QueryMeta obj = (QueryMeta) JSONObject.toBean(jsonObject,QueryMeta.class);
※ log.info(obj.valueof());
}

Object obj = JSONSerializer.toJava(json,jsonTest.makeConfig());
if(obj.getClass().isAssignableFrom(ArrayList.class)){
ArrayList<QueryMeta> querys = (ArrayList<QueryMeta>) obj;
for (QueryMeta queryMeta : querys) {
log.info(queryMeta.valueof());
}
}
}
private JSONArray restorJSON(String json) {
return JSONArray.fromObject(json,makeConfig());
}
private JSONArray createJSON() {
JSONArray json = new JSONArray();
json.addAll(makeQueryByComponent(makeCompMap()),makeConfig());
log.info(json);
return json;
}
private JsonConfig makeConfig() {
JsonConfig config = new JsonConfig();
config.setCollectionType(List.class);
config.setRootClass(QueryMeta.class);
// config.registerJsonBeanProcessor(QueryMeta.class, new QueryMetaProcessor());
config.setPropertySetStrategy(PropertySetStrategy.DEFAULT);
return config;
}
private Map<String, SingletonMap> makeCompMap() {
Map<String, SingletonMap> map = new HashMap<String, SingletonMap>();
List<String> compnames = new ArrayList<String>();
compnames.add("accbook");
compnames.add("vouchertype");
compnames.add("voucherno");
compnames.add("preparedate");
for (String name : compnames) {
SingletonMap map2 = new SingletonMap(opMap.get(name),"a" + name);
map.put(name, map2);
}
return map;
}
/**
*
* @param compMap {compname:{operator:values}}
* @return
*/
private List<QueryMeta> makeQueryByComponent(
Map<String, SingletonMap> compMap) {
List<QueryMeta> metas = new LinkedList<QueryMeta>();
Set<String> keys = compMap.keySet();
for (String key : keys) {
QueryMeta meta = new QueryMeta();
meta.setLeftKey(key);
SingletonMap map = compMap.get(key);
meta.setOperator(map.getKey().toString());
meta.setRightValues(map.getValue());
metas.add(meta);
}
return metas;
}
}
我就不详细解释了,考验一下你看代码的能力,主要的几个地方前面我用※标记出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunjinfu1987
2015-08-21 · TA获得超过3151个赞
知道大有可为答主
回答量:1218
采纳率:72%
帮助的人:413万
展开全部
推荐用org.codehaus.jackson代替JSONObject,JSONObject中有很多bug。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式