json字符串构造为对象
在郑州大学参加校招的时候,遇到了一家看着貌似不错的公司,公司boss本身就是程序员出身,所以笔试题也是比较别致的。。。。我拿到卷子一看,就一道题目。
将json字符串构造成对象,当时实在是没有想到怎么实现的,因此而错过了一个比较好的机会,从那以后对这道题目印象十分深刻,今天看到一种方法,不知道是否符合当时的笔试要求。方法如下:
所需jar包:
jackson-core-asl-1.8.5.jar,jackson-mapper-asl-1.8.5.jar ,
实现类:
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.JsonParser.Feature;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import com.weqia.site.task.form.TaskForm;
public class JsonUtil {
private static final Log log = LogFactory.getLog(JsonUtil.class);
/**
*
* @Description 把object转换成JSON格式的字符串
* @param obj
* @return
*/
public static String toJson(Object obj) {
Writer writer = new StringWriter();
String result = "";
try {
ObjectMapper om = new ObjectMapper();
om.writeValue(writer, obj);
result = writer.toString();
if (log.isDebugEnabled()) {
System.out.println(result);
}
} catch (Exception e) {
if (log.isDebugEnabled()) {
log.debug(e.getMessage(), e);
}
} finally {
if(writer != null){
try {
writer.close();
writer = null;
} catch (IOException e) {
if (log.isDebugEnabled()) {
log.debug(e.getMessage(), e);
}
}
}
}
return result;
}
/**
* 把JSON格式的字符串转换成对应的对象实例
* @param json
* @param clas
* @return
*/
public static <T> T toObject(String json, Class<T> clas){
T obj = null;
try {
ObjectMapper om = new ObjectMapper();
om.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true) ;
obj = om.readValue(json, clas);
} catch (JsonParseException e) {
log.error(e.getMessage(), e);
} catch (JsonMappingException e) {
log.error(e.getMessage(), e);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
return obj;
}
/**
* 把JSON格式的字符串转换成对应的对象实例 不显示异常
* @param json
* @param clas
* @return
*/
public static <T> T toObjectHide(String json, Class<T> clas){
T obj = null;
try {
ObjectMapper om = new ObjectMapper();
om.configure(Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true) ;
obj = om.readValue(json, clas);
} catch (JsonParseException e) {
} catch (JsonMappingException e) {
} catch (IOException e) {
}
return obj;
}
public static void main(String[] args){
TaskForm tasks = new TaskForm();
String[] member_ids = new String[0];
Integer[] fileIds = new Integer[0];
tasks.setMember_ids(member_ids);
tasks.setFileIds(fileIds);
tasks.setBegin_date(new Date());
String sss= JsonUtil.toJson(tasks);
// {"task_id":null,"member_id":null,"company_id":null,"project_id":null,"task_title":null,"begin_date":null,"visible_type":null,"task_content":null,"member_ids":[],"sourceType":null,"isProjectTask":false,"is_sms":null,"end_date":null,"create_id":null,"fileIds":[],"modify_id":null}
//System.out.println(sss);
tasks.setMember_ids(null);
tasks.setFileIds(null);
tasks.setBegin_date(new Date(-1));
String sss1= JsonUtil.toJson(tasks);
//System.out.println(sss1);
}
}
只是不太确定当时笔试要求是否是不让调用jar包的,如果是,还是不合格的,以后真的要多看一些源码了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了