`
jilong-liang
  • 浏览: 482636 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

Map,HashMap组装Json数据,jackson简单的入门和解析Json例子

    博客分类:
  • Json
阅读更多
package com.ljl.org.domain;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.JsonToken;
import org.codehaus.jackson.map.ObjectMapper;

import com.google.gson.Gson;
import com.ljl.org.entity.Info;
import com.ljl.org.entity.User;

/**
 *@Author:liangjilong
 *@Date:2013-8-13
 *@Email:jilongliang@sina.com
 *@Version:Version1.0
 *@CopyRight:liangjilong
 *@Description:http://wiki.fasterxml.com/JacksonInFiveMinutes#Full_Data_Binding_.28POJO.29_Example
 *
 *=====================================
	*	=====================================
	*	☆★★建议解析json的有:
	*	1)GSON (gson-2.2.4.jar)
	*	2)json-lib-2.2.3-jdk15.jar--
		
	*	☆不建议使用的:
	*	JackSON比较扯淡(毛线)
		
	*	需要的jar
	*	    http://download.csdn.net/detail/jilongliang/5789041
	*		jackson-all-1.6.2.jar
	*		jackson-core-asl-1.6.2.jar
	*		jackson-mapper-asl-1.6.2.jar
	*		jakarta-oro.jar
	*	=====================================
	*	=====================================
   */
public class Jackson1 {
   private static ObjectMapper mapper = new ObjectMapper();  
   public static void main(String[] args) throws Exception {
	   jackSon1();
	   jackSon2();
  }
   /**
    * 简单的JackSon测试,对比一下,不知道谁抄谁的!Gson和Json-lib-2.2.3-jdk15也有很多相似的
    * 使用者两个技术的人都知道、、、、 
    * ===================================================
    * Gson创建一个JsonParser
	* JsonParser parser = new JsonParser();
	* JsonElement jsonEl = parser.parse(json);
	* ===================================================
	* JackSon 创建一个JsonParser
	*  JsonFactory f = new JsonFactory();//实例JSON工程对象
	*  JsonParser jp = f.createJsonParser(json);
	* ===================================================
    */
   public static void  jackSon1()throws Exception{
	   String json = "[{\"userName\": \"liangjilong\",\"address\":\"广东阳春\"},{\"userName\": \"liangjilong\",\"address\": \"广东阳春\"}]";
	   JsonFactory f = new JsonFactory();//实例JSON工程对象
	   JsonParser jp = f.createJsonParser(json);
	   jp.nextToken();//下一个JsonToken
	   while (jp.nextToken() == JsonToken.START_OBJECT) {
	       User u = mapper.readValue(jp, User.class);//对象化
	       System.out.println(u.getUserName()+"\t"+u.getAddress());
	    }
   }
   /**
    * @throws Exception
    */
   public static void  jackSon2()throws Exception{
	   /**
		  * 组装address对象的数据
		  */
		 Map<String, String> address = new HashMap <String, String>(); 
		 address.put("province", "广东省");
		 address.put("city", "广州市");
		 address.put("district", "天河区");
		 address.put("street", "棠东"); 
		 /**
		  * 组装users对象的数据
		  */
		 Map<String, String> users = new HashMap <String, String>(); 
		 users.put("userName", "liangjilong");
		 users.put("age", "25");
		 users.put("tel", "12396878");
		 users.put("email", "jilongliang@sina.com"); 
		 
		 Map<Object, Object> listsObj = new HashMap <Object, Object>(); 
		 listsObj.put("address",address);//address节点
		 listsObj.put("user",users);//users节点
		 
		 Object obj=listsObj;//转换成对象
		 
		 Map<Object, Object> info = new HashMap <Object, Object>(); 
		 info.put("info", obj);//json的根节点
		 //System.out.println(info);
		 /**
		  * 写
		  */
		 String path="D:/test/json1.txt";
		 mapper.writeValue(new File(path), info);//把数据写入本地文件,JackSon会以json格式写入进去的
		 /**
		  * 读
		  */
		 String jsons=info.toString().replace("=", ":");
		 //用Gson处理/初次使用JackSon找不到处理json数据,由于之前使用Gson就熟悉,就借用一下处理,感觉有点毛线。O(∩_∩)O哈哈~无语.
		 //String newJson=new Gson().toJson(info);
                 String newJson=mapper.writeValueAsString(info);
		 int start=newJson.indexOf(":")+1;
		 int end=newJson.lastIndexOf("}");
		 jsons="["+newJson.substring(start, end)+"]";//组装JackSon支持的格式.
		 JsonFactory f = new JsonFactory();//实例JSON工程对象
	     JsonParser jp = f.createJsonParser(jsons);
	     jp.nextToken();//下一个JsonToken
	     while (jp.nextToken() == JsonToken.START_OBJECT) {
	       Info inf = mapper.readValue(jp, Info.class);//对象化
	       System.out.println(inf.getAddress().getDistrict());//获取Address对象的值
	       System.out.println(inf.getUser().getUserName());//获取User的值
	    }  
   }
}

 

package com.ljl.org.entity;
/**
 *@Author:liangjilong
 *@Date:2013-8-13
 *@Email:jilongliang@sina.com
 *@Version:Version1.0
 *@CopyRight:liangjilong
 *@Description:
 */
public class Info {
	private Address address;
	private User user;
	public Address getAddress() {
		return address;
	}
	public void setAddress(Address address) {
		this.address = address;
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
}

 

package com.ljl.org.entity;
/**
 *@Author:liangjilong
 *@Date:2013-8-13
 *@Email:jilongliang@sina.com
 *@Version:Version1.0
 *@CopyRight:liangjilong
 *@Description:
 */
public class Address {
	private String province;
	private String city;
	private String district;
	private String street;
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getDistrict() {
		return district;
	}
	public void setDistrict(String district) {
		this.district = district;
	}
	public String getStreet() {
		return street;
	}
	public void setStreet(String street) {
		this.street = street;
	}
}

 

package com.ljl.org.entity;
/**
 *@Author:liangjilong
 *@Date:2013-8-13
 *@Email:jilongliang@sina.com
 *@Version:Version1.0
 *@CopyRight:liangjilong
 *@Description:
 */
public class User {
	private int Id;  
	private String userName;
	private String tel;
	private String address;
	private String age;
	private String email;
	public int getId() {
		return Id;
	}
	public void setId(int id) {
		Id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

 

0
3
分享到:
评论
1 楼 strivezsh 2013-08-14  
还是比较喜欢 把map 和 list封装成jsonobject jsonarray对象的 这种json jar
不太喜欢 json字符串转换成map list 这样泛型一大堆 有时候还要强转

相关推荐

    json字符串转成 Map/List

    以上三种库各有优缺点,Gson和Jackson性能较好,org.json库轻量级但功能相对简单。在实际开发中,应根据项目需求和性能要求选择合适的库。同时,理解这些库的工作原理和使用方式对于提升编程效率至关重要。

    Map转JSON的jar包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读的特性,被广泛应用于前后端交互。当需要将Java中的Map对象转换为JSON字符串时,我们就需要用到特定的库来实现这一功能。本文将...

    json和map互转jackson和json-lib两种方式实现和区别

    使用Jackson库将Map转换为JSON和将JSON解析为Map的步骤如下: 1. **Map转JSON**: ```java import com.fasterxml.jackson.databind.ObjectMapper; ObjectMapper mapper = new ObjectMapper(); Map, Object&gt; ...

    Map转成json

    Map和Json都是广泛使用的数据格式,但它们有着不同的应用场景。Map是许多编程语言(如Java、Python等)中的一个内置数据类型,用于存储键值对,而Json则是一种轻量级的数据交换格式,常用于Web服务的数据传输。本...

    jackson json 转 map 数值科学计数法的问题解决.docx

    Jackson JSON 转 Map 之科学计数法问题解决方案 Jackson 是一个流行的 ...通过启用 USE_BIG_DECIMAL_FOR_FLOATS 选项,我们可以解决 Jackson 将 JSON 转换为 Map 时的科学计数法的问题,从而确保数据的精度和正确性。

    JSON java数据格式解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但不是JavaScript的一部分。JSON在Java中的解析通常涉及将JSON字符串...

    java处理JSON数据

    在Java编程语言中,处理JSON(JavaScript Object Notation)数据是一项常见的任务,因为JSON作为一种轻量级的数据...理解这些库的使用方式对于任何Java开发者来说都是至关重要的,特别是在处理Web服务和数据交换时。

    JSON与JAVA数据的转换

    而在Java编程语言中,处理JSON数据通常涉及到将JSON字符串或对象转换为Java对象(如`Map`、`List`、自定义Java Bean类等),以及反之亦然的过程。 #### JSON与Java数据类型的对应关系 1. **JSON Object &lt;-&gt; Java ...

    对象转换成JSON和Map

    "对象转换成JSON和Map"是一个核心话题,特别是在Java编程语言中,因为JSON(JavaScript Object Notation)是网络通信中广泛使用的轻量级数据交换格式,而Map则是一种通用的数据结构,用于存储键值对。下面我们将深入...

    转换为json数据以及完整的json包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但被广泛应用于各种编程语言中,包括Java。在本主题中,我们将深入探讨...

    json数据转换工具jsonutil

    例如,一个简单的示例是,从服务器获取JSON响应后,我们可以用JSONUtil将字符串转换为Map,然后提取所需数据: ```java String jsonString = "{'name': 'John', 'age': 30, 'city': 'New York'}"; Map, Object&gt; map...

    eclipse-json相关jar包

    在Eclipse中处理JSON数据,开发者通常会使用到一些库来方便地解析和生成JSON对象。这些库包括Jackson、Gson、org.json和我们这里提到的json-lib。json-lib是一个Java库,它提供了一种简单的方式来处理JSON数据,...

    SpringMVC返回JSON数据相关Jar包

    2. `jackson-core.jar`: Jackson的基础库,包含JSON解析和生成的低级别API。 3. `jackson-annotations.jar`: 提供了Jackson注解,如`@JsonProperty`,`@JsonInclude`等,用于自定义序列化和反序列化的行为。 4. `...

    json-lib 解析json串工具类

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前端与后端之间的数据交互,因为它易于人阅读和编写,同时也易于机器解析和生成。`json-lib`是一个Java库,它提供了一种在Java应用程序中处理...

    json解析jar包

    需要注意的是,随着技术的发展,还有其他一些更现代的JSON库如Jackson、Gson等出现,它们可能提供了更多特性和更好的性能,但在一些老项目或者对兼容性有特殊要求的场景下,`net.sf.json`仍然是一个可靠的选择。

    json转Map,转javaBean,javBean和Map转json

    Map和JavaBean是Java中的两种数据结构,它们与JSON有着紧密的关联,因为它们都能用来存储和表示数据。本篇将详细介绍如何在Java中进行JSON到Map、JavaBean以及反之的转换,并探讨相关工具的使用。 1. JSON到Map的...

    Java解析JSON源码

    Java解析JSON源码是Java开发中的重要一环,因为JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据传输。本文将深入探讨如何在Java中解析JSON源码,以及如何利用...

    jackson的jar包,用于转换map与list到json

    Jackson是Java领域中广泛使用的JSON处理库,由FasterXML公司开发并维护。它提供了高效且功能丰富的工具,...无论是简单的Map、List还是复杂的Java对象,Jackson都能够胜任,极大地简化了Java开发者处理JSON数据的工作。

    servlet获取json的小例子

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。本例子将详细介绍如何在Servlet中获取并处理JSON数据。 首先,我们需要引入处理JSON的库,最常用的...

Global site tag (gtag.js) - Google Analytics