ObjectMapper类
1. 首先了解包结构(引用其它第三方包jackson-all-1.9.11.jar)
2. 常用的方法
2.1 JSON字符串转为对象
public <T> TreadValue(java.lang.String content, java.lang.Class<T> valueType)
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();
}
}
本文介绍了如何使用 Jackson 的 ObjectMapper 类进行 JSON 数据与 Java 对象之间的转换。包括将 JSON 字符串解析为 Java 对象的方法 `readValue` 和将 Java 对象序列化为 JSON 字符串的方法 `writeValueAsString`。此外,还探讨了 ObjectMapper 的线程安全性问题,并提供了一个使用静态变量确保线程安全的示例。
116

被折叠的 条评论
为什么被折叠?



