电信4g流量卡怎么激活大圣卡好看视频激活后怎么流量还在走

&&在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson、JSON-lib、Jackson等等。本文主要介绍Jackson的使用,Jackson除了能实现Java对象与Json串的互转外,还能將Java对象转换为Xml格式,使用较为简单而且据说效率比较高。
对于Jackson的jar包我们可以从maven资源库中下载:
所需要的jar包:
前面有介绍过json-lib这个框架,在线博文:
相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。而且Jackson社区相对比较活跃,更新速度也比较快。
一、准备工作
&1.下载依赖库jar包(jackson-all-1.6.2.jar)
然后在工程中导入这个jar包即可开始工作
官方示例:
&如果你需要转换xml,那么还需要stax2-api.jar
&2.测试类基本代码如下:
package cn.
import java.io.IOE
import java.util.ArrayL
import java.util.HashM
import java.util.I
import java.util.LinkedHashM
import java.util.L
import java.util.M
import java.util.S
import org.junit.A
import org.junit.B
import org.junit.T
import com.fasterxml.jackson.core.JsonE
import com.fasterxml.jackson.core.JsonGenerationE
import com.fasterxml.jackson.core.JsonG
import com.fasterxml.jackson.core.JsonParseE
import com.fasterxml.jackson.databind.JsonMappingE
import com.fasterxml.jackson.databind.ObjectM
import com.fasterxml.jackson.databind.node.JsonNodeF
import com.fasterxml.jackson.dataformat.xml.XmlM
* 将Java对象转换成json字符串,也可以将json字符串转换成Java对象
public class JacksonTest {
private JsonGenerator jsonGenerator = null;
private ObjectMapper objectMapper = null;
private AccountBean bean = null;
@SuppressWarnings("deprecation")
public void init() {
bean = new AccountBean();
bean.setAddress("china-Guangzhou");
bean.setEmail("mr_");
bean.setId(1);
bean.setName("zhaojd");
objectMapper = new ObjectMapper();
jsonGenerator =
objectMapper.getJsonFactory()
.createJsonGenerator(System.out, JsonEncoding.UTF8);
} catch (IOException e) {
e.printStackTrace();
public void destory() {
if (jsonGenerator != null) {
jsonGenerator.flush();
if (!jsonGenerator.isClosed()) {
jsonGenerator.close();
jsonGenerator = null;
objectMapper = null;
bean = null;
System.gc();
} catch (IOException e) {
e.printStackTrace();
* 1.1 java对象转换成json
public void javaBeanToJson() throws Exception {
System.out.println("jsonGenerator");
* writeObject()可以转换Java对象;例如:JavaBean/Map/List/Array等
jsonGenerator.writeObject(bean);
System.out.println();
System.out.println("ObjectMapper");
* writeValue() 和 writeObject() 是相同的功能
objectMapper.writeValue(System.out, bean);
} catch (IOException e) {
e.printStackTrace();
* 所谓的json格式:
{"键":"值","键":"值","键":"值"}
* jsonGenerator
{"address":"china-Guangzhou","name":"zhaojd","id":1,"email":"mr_","birthday":null}
ObjectMapper
{"address":"china-Guangzhou","name":"zhaojd","id":1,"email":"mr_","birthday":null}
* 1.2 将Map集合转换成json字符串
* Exception
public void mapToJson() throws Exception {
Map&String, Object& map = new HashMap&String, Object&();
map.put("name", bean.getName());
map.put("account", bean);
bean = new AccountBean();
bean.setAddress("china-Lanzhou");
bean.setEmail("");
map.put("account2", bean);
System.out.println("jsonGenerator");
jsonGenerator.writeObject(map);
System.out.println("");
System.out.println("objectMapper");
objectMapper.writeValue(System.out, map);
} catch (IOException e) {
e.printStackTrace();
* jsonGenerator
"account2":{"address":"china-Lanzhou","name":null,"id":0,"email":"","birthday":null},
"name":"zhaojd",
"account":{"address":"china-Guangzhou","name":"zhaojd","id":1,"email":"mr_","birthday":null}
objectMapper
"account2":{"address":"china-Lanzhou","name":null,"id":0,"email":"","birthday":null},
"name":"zhaojd","
account":{"address":"china-Guangzhou","name":"zhaojd","id":1,"email":"mr_","birthday":null}
* 1.3 将List转换成json
public void listToJson() throws Exception {
List&AccountBean& list = new ArrayList&AccountBean&();
list.add(bean);
bean = new AccountBean();
bean.setId(2);
bean.setAddress("address2");
bean.setEmail("email2");
bean.setName("name2");
list.add(bean);
System.out.println("jsonGenerator");
jsonGenerator.writeObject(list);
System.out.println();
System.out.println("ObjectMapper");
* 用objectMapper直接返回list转换成的JSON字符串
System.out.println("直接返回list转换成的json" + objectMapper.writeValueAsString(list));
objectMapper.writeValue(System.out, list);
} catch (IOException e) {
e.printStackTrace();
* jsonGenerator
{"address":"china-Guangzhou","name":"zhaojd","id":1,"email":"mr_","birthday":null},
{"address":"address2","name":"name2","id":2,"email":"email2","birthday":null}
ObjectMapper
直接返回list转换成的json[
{"address":"china-Guangzhou","name":"zhaojd","id":1,"email":"mr_","birthday":null},
{"address":"address2","name":"name2","id":2,"email":"email2","birthday":null}
{"address":"china-Guangzhou","name":"zhaojd","id":1,"email":"mr_","birthday":null},
{"address":"address2","name":"name2","id":2,"email":"email2","birthday":null}
* 1.4 下面来看看jackson提供的一些类型,用这些类型完成json转换;如果你使用这些类型转换JSON的话,
那么你即使没有JavaBean(Entity)也可以完成复杂的Java类型的JSON转换。
下面用到这些类型构建一个复杂的Java对象,并完成JSON转换。
public void othersToJson() throws Exception {
String[] arr = {"a", "b", "c"};
System.out.println("jsonGenerator");
String str = "hello world jackson!";
jsonGenerator.writeBinary(str.getBytes());
jsonGenerator.writeBoolean(true);
jsonGenerator.writeNull();
jsonGenerator.writeNumber(2.2f);
jsonGenerator.writeRaw("c");
jsonGenerator.writeRaw(str, 5, 10);
jsonGenerator.writeRawValue(str, 5, 5);
jsonGenerator.writeString(str);
jsonGenerator.writeTree(JsonNodeFactory.instance.POJONode(str));
System.out.println();
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectFieldStart("user");
jsonGenerator.writeStringField("name", "jackson");
jsonGenerator.writeBooleanField("sex", true);
jsonGenerator.writeNumberField("age", 22);
jsonGenerator.writeEndObject();
jsonGenerator.writeArrayFieldStart("infos");
jsonGenerator.writeNumber(22);
jsonGenerator.writeString("this is array");
jsonGenerator.writeEndArray();
jsonGenerator.writeEndObject();
AccountBean bean = new AccountBean();
bean.setAddress("address");
bean.setEmail("email");
bean.setId(1);
bean.setName("haha");
jsonGenerator.writeStartObject();
jsonGenerator.writeObjectField("user", bean);
jsonGenerator.writeObjectField("infos", arr);
jsonGenerator.writeEndObject();
} catch (Exception e) {
e.printStackTrace();
* jsonGenerator
"aGVsbG8gd29ybGQgamFja3NvbiE=" true null 2.2c world jac
worl "hello world jackson!" "hello world jackson!"
{"user":{"name":"jackson","sex":true,"age":22},"infos":[22,"this is array"]}
{"user":{"address":"address","name":"haha","id":1,"email":"email","birthday":null},"infos":["a","b","c"]}
* 2.1 将json字符串转换成JavaBean对象
public void jsonToJavaBean() throws Exception {
String json = "{\"name\":\"zhaojd\",\"email\":\"email\",\"address\":\"address\"}";
AccountBean acc = objectMapper.readValue(json, AccountBean.class);
System.out.println(acc.getName());
System.out.println(acc);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
* 0#zhaojd#email#address#null
* 2.2 将json 转换成List
@SuppressWarnings("unchecked")
public void jsonToList() {
String json =
"[{\"address\": \"address2\",\"name\":\"zhaojd\",\"id\":2,\"email\":\"email2\"},"
+ "{\"address\":\"address\",\"name\":\"zhaojd\",\"id\":1,\"email\":\"email\"}]";
List&LinkedHashMap&String, Object&& list = objectMapper.readValue(json, List.class);
System.out.println("list的长度:" + list.size());
for (int i = 0; i & list.size(); i++) {
Map&String, Object& map = list.get(i);
Set&String& set = map.keySet();
for (Iterator&String& it = set.iterator(); it.hasNext();) {
String key = it.next();
System.out.println(key + ":" + map.get(key));
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
list的长度:2
address:address2
name:zhaojd
email:email2
address:address
name:zhaojd
email:email
* 2.3 json字符串转换成Array
public void jsonToArray() throws Exception {
String json =
"[{\"address\": \"address2\",\"name\":\"zhaojd2\",\"id\":2,\"email\":\"email2\"},"
+ "{\"address\":\"address\",\"name\":\"zhaojd\",\"id\":1,\"email\":\"email\"}]";
AccountBean[] arr = objectMapper.readValue(json, AccountBean[].class);
System.out.println("数组的长度为:" + arr.length);
for (int i = 0; i & arr. i++) {
System.out.println(arr[i]);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
数组的长度为:2
2#zhaojd2#email2#address2#null
1#zhaojd#email#address#null
* 2.4 json转换成Map集合
@SuppressWarnings("unchecked")
public void jsonToMap() throws Exception {
String json =
"{\"success\":true,\"A\":{\"address\": \"address2\",\"name\":\"zhaojd2\",\"id\":2,\"email\":\"email2\"},"
+ "\"B\":{\"address\":\"address\",\"name\":\"zhaojd\",\"id\":1,\"email\":\"email\"}}";
Map&String, Map&String, Object&& maps = objectMapper.readValue(json, Map.class);
System.out.println("map集合的长度为:" + maps.size());
Set&String& key = maps.keySet();
Iterator&String& iter = key.iterator();
while (iter.hasNext()) {
String field = iter.next();
System.out.println(field + ":" + maps.get(field));
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
* 3. jackson对xml的支持
public void objectToXml() throws Exception {
System.out.println("XmlMapper");
XmlMapper xml = new XmlMapper();
* javaBean转换成xml
AccountBean account = new AccountBean();
Birthday birthday = new Birthday("1992-08");
account.setAddress("广州");
account.setBirthday(birthday);
account.setEmail("mr_zhaojd");
account.setId(1);
account.setName("zhaojd");
String xmlStr = xml.writeValueAsString(account);
System.out.println(xmlStr);
* List转换成xml
List&AccountBean& list = new ArrayList&AccountBean&();
list.add(account);
list.add(account);
System.out.println(xml.writeValueAsString(list));
* Map转换xml文档
Map&String, AccountBean& map = new HashMap&String, AccountBean&();
map.put("A", account);
map.put("B", account);
System.out.println(xml.writeValueAsString(map));
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
* XmlMapper
&AccountBean xmlns=""&
&id&1&/id&
&name&zhaojd&/name&
&email&mr_zhaojd&/email&
&address&广州&/address&
&birthday&&birthday&1992-08&/birthday&&/birthday&
&/AccountBean&
&ArrayList xmlns=""&
&id&1&/id&
&name&zhaojd&/name&
&email&mr_zhaojd&/email&
&address&广州&/address&
&birthday&&birthday&1992-08&/birthday&&/birthday&
&/ArrayList&
&zdef:ArrayList xmlns:zdef=""&
&zdef:id&1&/zdef:id&
&zdef:name&zhaojd&/zdef:name&
&zdef:email&mr_zhaojd&/zdef:email&
&zdef:address&广州&/zdef:address&
&zdef:birthday&&zdef:birthday&1992-08&/zdef:birthday&&/zdef:birthday&
&/zdef:ArrayList&
&HashMap xmlns=""&
&id&1&/id&
&name&zhaojd&/name&
&email&mr_zhaojd&/email&
&address&广州&/address&
&birthday&&birthday&1992-08&/birthday&&/birthday&
&id&1&/id&
&name&zhaojd&/name&
&email&mr_zhaojd&/email&
&address&广州&/address&
&birthday&&birthday&1992-08&/birthday&&/birthday&
&/HashMap&
public void xmlToObject() {
XmlMapper xmlMapper = new XmlMapper();
String xml = "&AccountBean&&id&1&/id&&name&zhaojd&/name&&email&mr_zhaojd&/email&&address&广州&/address&&birthday&&birthday&1992-08&/birthday&&/birthday&&/AccountBean&";
AccountBean ab = xmlMapper.readValue(xml,AccountBean.class);
System.out.println(ab);
catch (IOException e) {
e.printStackTrace();
* 1#zhaojd#mr_zhaojd#广州#1992-08
参考原文出处:
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:66395次
积分:2001
积分:2001
排名:第18016名
原创:127篇
转载:51篇
阅读:1735
(5)(1)(7)(3)(3)(17)(14)(16)(23)(23)(9)(13)(8)(11)(11)(17)(1)Jackson框架、json的各种转换输出、非常的IMBA - 推酷
Jackson框架、json的各种转换输出、非常的IMBA
Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。
前面有介绍过json-lib这个框架,在线博文:
相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。而且Jackson社区相对比较活跃,更新速度也比较快。
一、准备工作
1、 下载依赖库jar包
Jackson的jar all下载地址:
然后在工程中导入这个jar包即可开始工作
官方示例:
因为下面的程序是用junit测试用例运行的,所以还得添加junit的jar包。版本是junit-4.2.8
如果你需要转换xml,那么还需要stax2-api.jar
2、 测试类基本代码如下
package com.hoo.
import java.io.IOE
import java.io.StringW
import java.util.ArrayL
import java.util.HashM
import java.util.I
import java.util.LinkedHashM
import java.util.L
import java.util.M
import java.util.S
import org.codehaus.jackson.JsonE
import org.codehaus.jackson.JsonGenerationE
import org.codehaus.jackson.JsonG
import org.codehaus.jackson.JsonParseE
import org.codehaus.jackson.map.JsonMappingE
import org.codehaus.jackson.map.ObjectM
import org.codehaus.jackson.node.JsonNodeF
import org.codehaus.jackson.xml.XmlM
import org.junit.A
import org.junit.B
import org.junit.T
import com.hoo.entity.AccountB
* &b&function:&/b&Jackson 将java对象转换成JSON字符串,也可以将JSON字符串转换成java对象
* jar-lib-version: jackson-all-1.6.2
* jettison-1.0.1
* @author hezhe
* @project Spring3
* @email zhe-jiang.
* @version 1.0
@SuppressWarnings(&unchecked&)
public class JacksonTest {
private JsonGenerator jsonGenerator =
private ObjectMapper objectMapper =
private AccountBean bean =
public void init() {
bean = new AccountBean();
bean.setAddress(&china-Guangzhou&);
bean.setEmail(&hoojo_@&);
bean.setId(1);
bean.setName(&hoojo&);
objectMapper = new ObjectMapper();
jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8);
} catch (IOException e) {
e.printStackTrace();
public void destory() {
if (jsonGenerator != null) {
jsonGenerator.flush();
if (!jsonGenerator.isClosed()) {
jsonGenerator.close();
jsonGenerator =
objectMapper =
System.gc();
} catch (IOException e) {
e.printStackTrace();
3、 所需要的JavaEntity
package com.hoo.
public class AccountBean {
private int
//getter、setter
public String toString() {
return this.name + &#& + this.id + &#& + this.address + &#& + this.birthday + &#& + this.
package com.hoo.
public class Birthday {
public Birthday(String birthday) {
this.birthday =
//getter、setter
public Birthday() {}
public String toString() {
return this.
二、Java对象转换成JSON
1、 JavaBean(Entity/Model)转换成JSON
* &b&function:&/b&将java对象转换成json字符串
* @author hezhe
* @createDate
下午06:01:10
public void writeEntityJSON() {
System.out.println(&jsonGenerator&);
//writeObject可以转换java对象,eg:JavaBean/Map/List/Array等
jsonGenerator.writeObject(bean);
System.out.println();
System.out.println(&ObjectMapper&);
//writeValue具有和writeObject相同的功能
objectMapper.writeValue(System.out, bean);
} catch (IOException e) {
e.printStackTrace();
运行后结果如下:
jsonGenerator
{&address&:&china-Guangzhou&,&name&:&hoojo&,&id&:1,&birthday&:null,&email&:&hoojo_@&}
ObjectMapper
{&address&:&china-Guangzhou&,&name&:&hoojo&,&id&:1,&birthday&:null,&email&:&hoojo_@&}
上面分别利用JsonGenerator的writeObject方法和ObjectMapper的writeValue方法完成对Java对象的转换,二者传递的参数及构造的方式不同;JsonGenerator的创建依赖于ObjectMapper对象。也就是说如果你要使用JsonGenerator来转换JSON,那么你必须创建一个ObjectMapper。但是你用ObjectMapper来转换JSON,则不需要JSONGenerator。
objectMapper的writeValue方法可以将一个Java对象转换成JSON。这个方法的参数一,需要提供一个输出流,转换后可以通过这个流来输出转换后的内容。或是提供一个File,将转换后的内容写入到File中。当然,这个参数也可以接收一个JSONGenerator,然后通过JSONGenerator来输出转换后的信息。第二个参数是将要被转换的Java对象。如果用三个参数的方法,那么是一个Config。这个config可以提供一些转换时的规则,过指定的Java对象的某些属性进行过滤或转换等。
2、 将Map集合转换成Json字符串
* &b&function:&/b&将map转换成json字符串
* @author hoojo
* @createDate
下午06:05:26
public void writeMapJSON() {
Map&String, Object& map = new HashMap&String, Object&();
map.put(&name&, bean.getName());
map.put(&account&, bean);
bean = new AccountBean();
bean.setAddress(&china-Beijin&);
bean.setEmail(&&);
map.put(&account2&, bean);
System.out.println(&jsonGenerator&);
jsonGenerator.writeObject(map);
System.out.println(&&);
System.out.println(&objectMapper&);
objectMapper.writeValue(System.out, map);
} catch (IOException e) {
e.printStackTrace();
转换后结果如下:
jsonGenerator
{&account2&:{&address&:&china-Beijin&,&name&:null,&id&:0,&birthday&:null,&email&:&&},&name&:&hoojo&,
&account&:{&address&:&china-Guangzhou&,&name&:&hoojo&,&id&:1,&birthday&:null,&email&:&hoojo_@&}}
objectMapper
{&account2&:{&address&:&china-Beijin&,&name&:null,&id&:0,&birthday&:null,&email&:&&},&name&:&hoojo&,
&account&:{&address&:&china-Guangzhou&,&name&:&hoojo&,&id&:1,&birthday&:null,&email&:&hoojo_@&}}
3、 将List集合转换成json
* &b&function:&/b&将list集合转换成json字符串
* @author hoojo
* @createDate
下午06:05:59
public void writeListJSON() {
List&AccountBean& list = new ArrayList&AccountBean&();
list.add(bean);
bean = new AccountBean();
bean.setId(2);
bean.setAddress(&address2&);
bean.setEmail(&email2&);
bean.setName(&haha2&);
list.add(bean);
System.out.println(&jsonGenerator&);
//list转换成JSON字符串
jsonGenerator.writeObject(list);
System.out.println();
System.out.println(&ObjectMapper&);
//用objectMapper直接返回list转换成的JSON字符串
System.out.println(&1###& + objectMapper.writeValueAsString(list));
System.out.print(&2###&);
//objectMapper list转换成JSON字符串
objectMapper.writeValue(System.out, list);
} catch (IOException e) {
e.printStackTrace();
结果如下:
jsonGenerator
[{&address&:&china-Guangzhou&,&name&:&hoojo&,&id&:1,&birthday&:null,&email&:&hoojo_@&},
{&address&:&address2&,&name&:&haha2&,&id&:2,&birthday&:null,&email&:&email2&}]
ObjectMapper
1###[{&address&:&china-Guangzhou&,&name&:&hoojo&,&id&:1,&birthday&:null,&email&:&hoojo_@&},
{&address&:&address2&,&name&:&haha2&,&id&:2,&birthday&:null,&email&:&email2&}]
2###[{&address&:&china-Guangzhou&,&name&:&hoojo&,&id&:1,&birthday&:null,&email&:&hoojo_@&},
{&address&:&address2&,&name&:&haha2&,&id&:2,&birthday&:null,&email&:&email2&}]
外面就是多了个[]中括号;同样Array也可以转换,转换的JSON和上面的结果是一样的,这里就不再转换了。~.~
4、下面来看看jackson提供的一些类型,用这些类型完成json转换;如果你使用这些类型转换JSON的话,那么你即使没有JavaBean(Entity)也可以完成复杂的Java类型的JSON转换。下面用到这些类型构建一个复杂的Java对象,并完成JSON转换。
public void writeOthersJSON() {
String[] arr = { &a&, &b&, &c& };
System.out.println(&jsonGenerator&);
String str = &hello world jackson!&;
jsonGenerator.writeBinary(str.getBytes());
jsonGenerator.writeBoolean(true);
jsonGenerator.writeNull();
jsonGenerator.writeNumber(2.2f);
jsonGenerator.writeRaw(&c&);
jsonGenerator.writeRaw(str, 5, 10);
jsonGenerator.writeRawValue(str, 5, 5);
jsonGenerator.writeString(str);
jsonGenerator.writeTree(JsonNodeFactory.instance.POJONode(str));
System.out.println();
jsonGenerator.writeStartObject();//{
jsonGenerator.writeObjectFieldStart(&user&);//user:{
jsonGenerator.writeStringField(&name&, &jackson&);//name:jackson
jsonGenerator.writeBooleanField(&sex&, true);//sex:true
jsonGenerator.writeNumberField(&age&, 22);//age:22
jsonGenerator.writeEndObject();//}
jsonGenerator.writeArrayFieldStart(&infos&);//infos:[
jsonGenerator.writeNumber(22);//22
jsonGenerator.writeString(&this is array&);//this is array
jsonGenerator.writeEndArray();//]
jsonGenerator.writeEndObject();//}
AccountBean bean = new AccountBean();
bean.setAddress(&address&);
bean.setEmail(&email&);
bean.setId(1);
bean.setName(&haha&);
//complex Object
jsonGenerator.writeStartObject();//{
jsonGenerator.writeObjectField(&user&, bean);//user:{bean}
jsonGenerator.writeObjectField(&infos&, arr);//infos:[array]
jsonGenerator.writeEndObject();//}
} catch (Exception e) {
e.printStackTrace();
运行后,结果如下:
jsonGenerator
&aGVsbG8gd29ybGQgamFja3NvbiE=& true null 2.2c world jac
worl &hello world jackson!& &hello world jackson!&
{&user&:{&name&:&jackson&,&sex&:true,&age&:22},&infos&:[22,&this is array&]}
{&user&:{&address&:&address&,&name&:&haha&,&id&:1,&birthday&:null,&email&:&email&},&infos&:[&a&,&b&,&c&]}
怎么样?构造的json字符串和输出的结果是一致的吧。关键看懂用JSONGenerator提供的方法,完成一个Object的构建。
三、JSON转换成Java对象
1、 将json字符串转换成JavaBean对象
public void readJson2Entity() {
String json = &{\&address\&:\&address\&,\&name\&:\&haha\&,\&id\&:1,\&email\&:\&email\&}&;
AccountBean acc = objectMapper.readValue(json, AccountBean.class);
System.out.println(acc.getName());
System.out.println(acc);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
很简单,用到了ObjectMapper这个对象的readValue这个方法,这个方法需要提供2个参数。第一个参数就是解析的JSON字符串,第二个参数是即将将这个JSON解析吃什么Java对象,Java对象的类型。当然,还有其他相同签名方法,如果你有兴趣可以一一尝试使用方法,当然使用的方法和当前使用的方法大同小异。运行后,结果如下:
haha#1#address#null#email
2、 将json字符串转换成List&Map&集合
* &b&function:&/b&json字符串转换成list&map&
* @author hoojo
* @createDate
下午06:12:01
public void readJson2List() {
String json = &[{\&address\&: \&address2\&,\&name\&:\&haha2\&,\&id\&:2,\&email\&:\&email2\&},&+
&{\&address\&:\&address\&,\&name\&:\&haha\&,\&id\&:1,\&email\&:\&email\&}]&;
List&LinkedHashMap&String, Object&& list = objectMapper.readValue(json, List.class);
System.out.println(list.size());
for (int i = 0; i & list.size(); i++) {
Map&String, Object& map = list.get(i);
Set&String& set = map.keySet();
for (Iterator&String& it = set.iterator();it.hasNext();) {
String key = it.next();
System.out.println(key + &:& + map.get(key));
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
尝试过将上面的JSON转换成List,然后List中存放AccountBean,但结果失败了。但是支持Map集合。因为你转成List.class,但是不知道List存放何种类型。只好默然Map类型。因为所有的对象都可以转换成Map结合,运行后结果如下:
address:address2
name:haha2
email:email2
address:address
email:email
3、 Json字符串转换成Array数组,由于上面的泛型转换不能识别到集合中的对象类型。所有这里用对象数组,可以解决这个问题。只不过它不再是集合,而是一个数组。当然这个不重要,你可以用Arrays.asList将其转换成List即可。
* &b&function:&/b&json字符串转换成Array
* @author hoojo
* @createDate
下午06:14:01
public void readJson2Array() {
String json = &[{\&address\&: \&address2\&,\&name\&:\&haha2\&,\&id\&:2,\&email\&:\&email2\&},&+
&{\&address\&:\&address\&,\&name\&:\&haha\&,\&id\&:1,\&email\&:\&email\&}]&;
AccountBean[] arr = objectMapper.readValue(json, AccountBean[].class);
System.out.println(arr.length);
for (int i = 0; i & arr. i++) {
System.out.println(arr[i]);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
运行后的结果:
haha2#2#address2#null#email2
haha#1#address#null#email
4、 Json字符串转换成Map集合
* &b&function:&/b&json字符串转换Map集合
* @author hoojo
* @createDate Nov 27, :06 PM
public void readJson2Map() {
String json = &{\&success\&:true,\&A\&:{\&address\&: \&address2\&,\&name\&:\&haha2\&,\&id\&:2,\&email\&:\&email2\&},&+
&\&B\&:{\&address\&:\&address\&,\&name\&:\&haha\&,\&id\&:1,\&email\&:\&email\&}}&;
Map&String, Map&String, Object&& maps = objectMapper.readValue(json, Map.class);
System.out.println(maps.size());
Set&String& key = maps.keySet();
Iterator&String& iter = key.iterator();
while (iter.hasNext()) {
String field = iter.next();
System.out.println(field + &:& + maps.get(field));
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
运行后结果如下:
success:true
A:{address=address2, name=haha2, id=2, email=email2}
B:{address=address, name=haha, id=1, email=email}
四、Jackson对XML的支持
Jackson也可以完成java对象到xml的转换,转换后的结果要比json-lib更直观,不过它依赖于stax2-api.jar这个jar包。
* &b&function:&/b&java对象转换成xml文档
* 需要额外的jar包 stax2-api.jar
* @author hezhe
* @createDate
下午06:11:21
public void writeObject2Xml() {
//stax2-api-3.0.2.jar
System.out.println(&XmlMapper&);
XmlMapper xml = new XmlMapper();
//javaBean转换成xml
//xml.writeValue(System.out, bean);
StringWriter sw = new StringWriter();
xml.writeValue(sw, bean);
System.out.println(sw.toString());
//List转换成xml
List&AccountBean& list = new ArrayList&AccountBean&();
list.add(bean);
list.add(bean);
System.out.println(xml.writeValueAsString(list));
//Map转换xml文档
Map&String, AccountBean& map = new HashMap&String, AccountBean&();
map.put(&A&, bean);
map.put(&B&, bean);
System.out.println(xml.writeValueAsString(map));
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
运行上面的方法,结果如下:
&unknown&&address&china-Guangzhou&/address&&name&hoojo&/name&&id&1&/id&&birthday/&&email&hoojo_@&/email&&/unknown&
&unknown&&unknown&&address&china-Guangzhou&/address&&name&hoojo&/name&&id&1&/id&&birthday/&&email&hoojo_@&/email&&/unknown&
&email&&address&china-Guangzhou&/address&&name&hoojo&/name&&id&1&/id&&birthday/&&email&hoojo_@&/email&&/email&&/unknown&
&unknown&&A&&address&china-Guangzhou&/address&&name&hoojo&/name&&id&1&/id&&birthday/&&email&hoojo_@&/email&&/A&
&B&&address&china-Guangzhou&/address&&name&hoojo&/name&&id&1&/id&&birthday/&&email&hoojo_@&/email&&/B&&/unknown&
看结果,根节点都是unknown 这个问题还没有解决,由于根节点没有转换出来,所有导致解析xml到Java对象,也无法完成。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 百度大圣卡什么免流量 的文章

 

随机推荐