ObjectMapper类
1. 首先了解包结构(引用其它第三方包jackson-all-1.9.11.jar)
2. 常用的方法
2.1 JSON字符串转为对象
public
throws
java.io.IOException,
org.codehaus.jackson.JsonParseException,org.codehaus.jackson.map.JsonMappingException { /* compiled code */ }
2.2 对象转为JSON字符串
public java.lang.StringwriteValueAsString(java.lang.Object value)
throws
java.io.IOException,
org.codehaus.jackson.JsonGenerationException,org.codehaus.jackson.map.JsonMappingException { /* compiled code */ }
3.线程安全
原因:
查看源码入口
核心代码 我们可以清楚的看到它使用了工厂模式是对象不会重复创建
这是工厂类源码
如果你足够细心你会发现使用了this关键字来设置setCodec,也就是说只用对象是同一个是才不会重新设置setCodec。所以使用时有两种方式,
第一种 创建单例。不推荐
第二种 使用static. 推荐。例子如下:
public classSemapDemo implements Runnable{
public static ObjectMapper mapper = new ObjectMapper();
finalSemaphore semp=new Semaphore(1);
staticint number=0;
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"--------------"+mapper.toString());
}
public static void main(String[] args) throws IOException {
// ExecutorServiceexec= Executors.newFixedThreadPool(20);
// SemapDemodemo=new SemapDemo();
// for(inti=0;i<20;i++){
//
// exec.execute(demo);
// }
SemapDemo semapDemo1=new SemapDemo();
Thread t1=new Thread(semapDemo1);
t1.start();
SemapDemo semapDemo2=new SemapDemo();
Thread t2=new Thread(semapDemo1);
t2.start();
SemapDemo semapDemo3=new SemapDemo();
Thread t3=new Thread(semapDemo3);
t3.start();
}
}