既然你看到这篇文章相信你已经了解JSON的好处了,那么废话不多说直接进入主题。
Jackson是java中众多json处理工具的一个,比起常见的Json-lib,Gson要快一些。
Jackson的官网:http://jackson.codehaus.org/
里面可以下载Jackson的Jar包 注意jackson依赖:Apache的commons-loggin。
下面聊一下Jackson的常见用法==================================
Bean----->JSON
public static String beanToJson(Object obj) throws IOException {
// 这里异常都未进行处理,而且流的关闭也不规范。开发中请勿这样写,如果发生异常流关闭不了
ObjectMapper mapper = CommonUtil.getMapperInstance(false);
StringWriter writer = new StringWriter();
JsonGenerator gen = new JsonFactory().createJsonGenerator(writer);
mapper.writeValue(gen, obj);
gen.close();
String json = writer.toString();
writer.close();
return json;
}
JSON------>Bean
public static Object jsonToBean(String json, Class<?> cls) throws Exception {
Object vo = mapper.readValue(json, cls);
return vo;
}
好了方法写完了咱们测试一下吧 看看他是否支持复杂类型的转换
public static void main(String[] args) throws Exception {
// 准备数据
List<Person> pers = new ArrayList<Person>();
Person p = new Person("张三", 46);
pers.add(p);
p = new Person("李四", 19);
pers.add(p);
p = new Person("王二麻子", 23);
pers.add(p);
TestVo vo = new TestVo("一个容器而已", pers);
// 实体转JSON字符串
String json = beanToJson(vo);
System.out.println("Bean>>>Json----" + json);
// 字符串转实体
TestVo vo2 = (TestVo)jsonToBean(json, TestVo.class);
System.out.println("Json>>Bean--与开始的对象是否相等:" + vo2.equals(vo));
}
输出结果
Bean>>>Json----{"voName":"一个容器而已","pers":[{"name":"张三","age":46},{"name":"李
四","age":19},{"name":"王二麻子","age":23}]}
Json>>Bean--与开始的对象是否相等:true
从结果可以看出从咱们转换的方法是对的,本文只是对Jackson的一个最简单的使用介绍。接下来的几篇文章咱们深入研究一下这玩意到底有多强大!
下面是本人涉及到的Bean 以及 CommonUtil
public class CommonUtil {
private static ObjectMapper mapper;
/**
* 一个破ObjectMapper而已,你为什么不直接new 还搞的那么复杂。接下来的几篇文章我将和你一起研究这个令人蛋疼的问题
*
* @param createNew
* 是否创建一个新的Mapper
* @return
*/
public static synchronized ObjectMapper getMapperInstance(boolean createNew) {
if (createNew) {
return new ObjectMapper();
} else if (mapper == null) {
mapper = new ObjectMapper();
}
return mapper;
}
}
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
Person other = (Person) obj;
if (age != other.age) {
return false;
}
if (name == null) {
if (other.name != null) {
return false;
}
} else if (!name.equals(other.name)) {
return false;
}
return true;
}
}
public class TestVo {
private String voName;
private List<Person> pers;
public TestVo() {
}
public TestVo(String voName, List<Person> pers) {
super();
this.voName = voName;
this.pers = pers;
}
public String getVoName() {
return voName;
}
public void setVoName(String voName) {
this.voName = voName;
}
public List<Person> getPers() {
return pers;
}
public void setPers(List<Person> pers) {
this.pers = pers;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
TestVo other = (TestVo) obj;
if (pers == null) {
if (other.pers != null) {
return false;
}
} else if (pers.size() != other.pers.size()) {
return false;
} else {
for (int i = 0; i < pers.size(); i++) {
if (!pers.get(i).equals(other.pers.get(i))) {
return false;
}
}
}
if (voName == null) {
if (other.voName != null) {
return false;
}
} else if (!voName.equals(other.voName)) {
return false;
}
return true;
}
}
分享到:
相关推荐
1. **对象到JSON字符串转换**:使用`ObjectMapper`类,可以将Java对象转换为JSON字符串。 ```java ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(yourJavaObject); ...
##### 4.1 将JSON字符串转换为Java对象 ```java import com.fasterxml.jackson.databind.ObjectMapper; public class JsonToJavaObject { public static void main(String[] args) { String jsonStr = "{\"name\...
1. `getObject4JsonString(String jsonString, Class pojoCalss)`:此方法接收一个JSON字符串和一个Java类的Class对象,然后使用`JSONObject.fromObject()`将JSON字符串转换为对应的Java对象(POJO,Plain Old Java ...
2. 请求响应处理:服务器返回的数据通常也是JSON格式,通过诸如Gson、Jackson或org.json库解析JSON字符串为Java对象,便于进一步处理。 3. 异步处理:由于Android主线程不能执行耗时操作,因此网络请求通常在...
本文将介绍两种Java中实体类转换为Json字符串的方法,这两种方法分别依赖于不同的库,其一利用了Jackson库,其二利用了ezmorph库。 首先,要实现这一功能,我们需要定义一个实体类。在本文中,实体类被命名为Emp,...
针对这个问题,本文将介绍两种方法,可以使得在使用Jackson进行序列化时,实体对象的属性值为null时,该属性不会被包含在生成的JSON字符串中。 首先,我们可以使用注解@JsonInclude来指定哪些属性需要被序列化。这...
`Gson`类的`fromJson`方法可以将JSON字符串转换为指定类型的Java对象。这里使用了泛型和`TypeToken`来动态解析JSON到`LinkedList<Student>`。`Student`类是一个简单的JavaBean,包含了属性和对应的getter、setter...
一旦实体类创建完成,就可以使用相应的JSON解析库提供的方法将JSON字符串转换为实体类对象。例如,如果使用json-simple,可以创建一个JSONObject实例,并使用其相关方法从JSON字符串中解析出数据,然后映射到Java...
然后,通过JSON库(如Gson、Jackson或org.json)将Java对象转换成JSON字符串。 2. **配置Web服务**:在Tomcat服务器上,开发者通常会创建一个Servlet或RESTful API来处理客户端请求。这些服务会根据HTTP请求的方法...
这里我们使用了`org.json.JSONObject`(注意:实际开发中可能需要导入第三方库,如Gson或Jackson),创建了一个JSON对象并填充了数据。然后设置HTTP响应的Content-Type为`application/json`,确保浏览器理解返回的...
Android提供了`org.json`库来解析和生成`json`字符串,也可以使用第三方库如Gson或Jackson进行更高效、更便捷的转换。 其次,`URL`(Uniform Resource Locator)是统一资源定位符,是互联网上的资源地址。在Android...
例如,`JsonDataEncoder`可能会使用Jackson或Gson库将`JsonData`实例转化为JSON字符串,然后再将字符串转换为字节数组。 2. **包的组装**:在Netty中,你可以定义自定义的`ChannelHandler`来处理编码过程。这些...
最后,我们可以使用Java编写类和方法,获取网络资源的方式下载天气预报JSON字符串数据,然后调用Google-Gson类库的类来解释JSON数据,并将解释后的数据全部存入之前准备好的JAVA数据实体类中,最后访问JAVA数据实体...
1. 对象转JSON字符串(toJSONString):在Java中,我们可以使用Fastjson的toJSONString方法来将一个Java对象转换成JSON字符串。这在需要将Java对象序列化为JSON格式供前端或者第三方服务使用时非常有用。示例代码...
例如,如果从JSON字符串转换为Java对象,可以使用Gson或Jackson库: ```java Gson gson = new Gson(); String jsonString = "{\"name\":\"John\", \"age\":30}"; Person person = gson.fromJson(jsonString, Person...
例如,Gson库允许我们将Java对象直接转换为JSON字符串,反之亦然。 3. **MenuJSON项目结构**: - 项目可能包含多个类,如`Product`、`Meal`、`Menu`和`Ingredient`,每个类对应JSON文件中的一个实体。 - 每个类会...
- `Entity2json`方法展示了如何将一个Java对象(如Userinfo类的实例)转换为JSON字符串。 - `list2Json`方法演示了将包含Userinfo对象的List集合转换为JSON字符串。 - `String2JSONArray`方法将一个字符串类型的数组...
使用`Gson`或`Jackson`库将JSON字符串转化为Java对象。如果没有这些库,可以使用`JSONObject`和`JSONArray`类进行手动解析。 ```java String jsonString; try { jsonString = EntityUtils.toString(response....
在源码中,你需要关注如何将接收到的JSON字符串转换为Java对象,比如Weather、City等实体类,这通常涉及到`JSONObject`和`JSONArray`的使用,以及递归解析嵌套的JSON结构。 最后,项目的主体部分`WeatherDemo`可能...
3. **JSON序列化**:使用如Jackson或Gson等库将Java对象转换为JSON字符串,再存储到Memcached中。这种方式易于理解和调试,但数据占用空间可能较大。 **对象存储策略** 1. **单个对象存储**:每个Java实体作为一个...