`

json-lib与jackson的比较

阅读更多

<script type="text/javascript">
(function(){
var p = {
url:location.href,
to:'qqmail',
desc:'', /*默认分享理由(可选)*/
summary:'',/*摘要(可选)*/
title:'',/*分享标题(可选)*/
site:'',/*分享来源 如:腾讯网(可选)*/
pics:'' /*分享图片的路径(可选)*/
};
var s = [];
for(var i in p){
s.push(i + '=' + encodeURIComponent(p[i]||''));
}
document.write(["<a target='_blank' ", 'href="http://mail.qq.com/cgi-bin/qm_share?', s.join("&"), '"', ' style="cursor:pointer;text-decoration:none;outline:none"><img src="http://rescdn.qqmail.com/zh_CN/htmledition/images/function/qm_open/ico_share_02.png"/></a>'].join(""));
})();
</script>

 

<a target="_blank" href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=HXB8bmxoeHFyXXtyZXB8dHEzfnJw" style="text-decoration:none;"><img src="http://rescdn.qqmail.com/zh_CN/htmledition/images/function/qm_open/ico_mailme_12.png"/></a>

 

json-lib的解析

 

public ResultData save1(HttpServletRequest request) {
		// 得到字符串形式的数据
		String orderStr = JsonUtils.formatStr(request.getParameter("order"));
		String salesLegInfoesStr = request.getParameter("salesLegInfoes");
		String postInfoStr = request.getParameter("postInfo");
		String travellersStr = request.getParameter("travellers");
		Map<String, Object> inMap = new HashMap<String, Object>();
		SalesOrder order = null;
		// 格式化json的时间,否则时间无法对应的保存
		JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] { "yyyy-MM-dd" }));
		order = (SalesOrder) JSONObject.toBean(
				JSONObject.fromObject(orderStr), SalesOrder.class);
		
		
		/*List<SalesLegInfo> salesLegInfos = (List<SalesLegInfo>) JSONArray
				.toCollection(JSONArray.fromObject(salesLegInfoesStr),
						SalesLegInfo.class);*/
		/*
		List<SalesLegInfo> salesLegInfos = new ArrayList<SalesLegInfo>();
		JSONArray salesLegInfoesArr = JSONArray.fromObject(salesLegInfoesStr);
		
		for(int i= 0;i<salesLegInfoesArr.size();i++){
			JSONObject salesLegInfoeJson = (JSONObject)salesLegInfoesArr.get(i);
			
			SalesLegInfo salesLegInfo = (SalesLegInfo)JSONObject.toBean((JSONObject.fromObject(salesLegInfoesArr.get(i))).discard("salesFreightRates"),SalesLegInfo.class);
			
			List<SalesFreightRate> salesFreightRates = (List<SalesFreightRate>)JSONArray
			.toCollection(JSONArray.fromObject(salesLegInfoeJson.get("salesFreightRates")),
					SalesFreightRate.class);
			salesLegInfo.setSalesFreightRates(salesFreightRates);
			salesLegInfos.add(salesLegInfo);
		}
		
		
		SalesPostInfo postInfo = (SalesPostInfo) JSONObject.toBean(
				JSONObject.fromObject(postInfoStr), SalesPostInfo.class);
		JSONArray travellersJsonArr = JSONArray.fromObject(travellersStr);// 旅客信息
		// 票的信息
		List<SalesTraveller> travellers = new ArrayList<SalesTraveller>();
		for (int i = 0; i < travellersJsonArr.size(); i++) {
			JSONObject travellerJson = (JSONObject)travellersJsonArr.get(i);
			SalesTraveller salesTraveller = (SalesTraveller) JSONObject.toBean(
					JSONObject.fromObject(JsonUtils.formatStr((JSONObject.fromObject(travellersJsonArr.get(i))).discard("tickets").toString())),
					SalesTraveller.class);

			JSONArray ticketsJsonArr = JSONArray.fromObject(travellerJson.get("tickets"));

			List<SalesTicket> tickets = new ArrayList<SalesTicket>();
			for (int j = 0; j < ticketsJsonArr.size(); j++) {
				JSONObject ticketJson = JSONObject.fromObject(ticketsJsonArr
						.get(j));
				if(!"null".equals(ticketJson.toString())&&ticketJson!=null&&!"".equals(ticketJson)){
					SalesTicket ticket = (SalesTicket) JSONObject.toBean(JSONObject
							.fromObject(JsonUtils.formatStr(ticketJson.discard("ticketUnites").toString())),
							SalesTicket.class);

					List<SalesTicketUnite> ticketUnite = (List<SalesTicketUnite>) JSONArray
							.toCollection(JSONArray.fromObject(((JSONObject)ticketsJsonArr
									.get(j)).get("ticketUnites")), SalesTicketUnite.class);

					ticket.setTicketUnites(ticketUnite);
					tickets.add(ticket);
				}
			}
			salesTraveller.setSalesTickets(tickets);
			travellers.add(salesTraveller);
		}
		order.setSalesLegInfos(salesLegInfos);
		order.setSalesPostInfo(postInfo);
		order.setSalesTravellers(travellers);
		salesOrderService.save(order);
		inMap.put("order", order);
		return new ResultData(inMap);
	}


jackson的解析

    public ResultData save(HttpServletRequest request) {
        // 得到字符串形式的数据
        Map<String, Object> rMap = new HashMap<String, Object>();
        String orderStr = JsonUtils.formatStr(request.getParameter("order"));
        String salesLegInfoesStr = request.getParameter("salesLegInfoes");
        String postInfoStr = request.getParameter("postInfo");
        String travellersStr = request.getParameter("travellers");
        ObjectMapper mapper= new ObjectMapper();
        mapper.getSerializationConfig().setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
        SalesOrder order = null;
        List<SalesLegInfo> salesLegInfoList = new ArrayList<SalesLegInfo>();
        try {
            order = mapper.readValue(orderStr, SalesOrder.class);
            SalesPostInfo salesPostInfo = mapper.readValue(postInfoStr, SalesPostInfo.class);
            
            List<LinkedHashMap<String, Object>> salesLegInfoMapList = mapper.readValue(salesLegInfoesStr, List.class);
            for(LinkedHashMap<String, Object> map: salesLegInfoMapList){
                List<SalesFreightRate> salesFreightRates = mapper.readValue(map.get("salesFreightRates").toString(),
                        new TypeReference<List<SalesFreightRate>>() {});
                map.remove("salesFreightRates");
                SalesLegInfo salesLegInfo = mapper.convertValue(map, SalesLegInfo.class);
                salesLegInfo.setSalesFreightRates(salesFreightRates);
                salesLegInfoList.add(salesLegInfo);
            }
            List<LinkedHashMap<String, Object>> travellersMapList = mapper.readValue(travellersStr, List.class);
            List<SalesTraveller> travellers = new ArrayList<SalesTraveller>();
            
            for (LinkedHashMap<String, Object> map: travellersMapList) {
                List<LinkedHashMap<String, Object>> ticketsMapList = mapper.readValue(map.get("tickets").toString(), List.class);
                List<SalesTicket> tickets = new ArrayList<SalesTicket>();
                for (LinkedHashMap<String, Object> inMap: ticketsMapList) {
                    List<SalesTicketUnite> ticketUnites = mapper.readValue(inMap.get("ticketUnites").toString(),
                            new TypeReference<List<SalesTicketUnite>>() {});
                    inMap.remove("ticketUnites");
                    SalesTicket ticket = mapper.convertValue(inMap, SalesTicket.class);
                    ticket.setTicketUnites(ticketUnites);
                    tickets.add(ticket);
                }
                map.remove("tickets");
                SalesTraveller salesTraveller = mapper.convertValue(map, SalesTraveller.class);
                salesTraveller.setSalesTickets(tickets);
                travellers.add(salesTraveller);
            }
            order.setSalesLegInfos(salesLegInfoList);
            order.setSalesPostInfo(salesPostInfo);
            order.setSalesTravellers(travellers);
            salesOrderService.save(order);
            rMap.put("order", order);
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new ResultData(rMap);
    }

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    json-lib-2.4-jdk15.jar

    然而,随着技术的发展,虽然json-lib在当时是一个流行的JSON处理库,但现在已有其他更先进的替代品,如Gson、Jackson和Fastjson等,它们在性能、易用性和功能上都有所提升。因此,对于新项目来说,选择这些更新的库...

    json-lib-2.2.3-jdk15.jar

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用...尽管现在有更现代的替代品如Gson、Jackson等,但在某些场景下,JSON-lib仍然是一个可靠的选择,特别是对于需要向后兼容的老项目。

    json-lib jar和所有依赖的jar

    在文件列表中的"jsonlib需要jar包",这可能是指包含了`json-lib`库及其所有依赖的JAR文件。在实际项目中,将这些JAR文件添加到项目的类路径(classpath)中,就可以使用`json-lib`提供的功能,而无需通过Maven或其他...

    json-lib-2.2.2-jdk15.jar

    4. **性能优化**:虽然json-lib是一个强大的库,但在处理大量数据时,其性能可能不如其他更现代的库如Jackson或Gson。然而,对于小型项目或对性能要求不高的场景,json-lib仍是一个可行的选择。 在Android开发中,...

    json-lib-2.4-jdk15和全部依赖jar包

    在处理复杂的Java对象和大量的数据时,`json-lib`提供了一套完整的解决方案,但随着技术的发展,还有其他更现代的JSON库如Gson、Jackson和Fastjson等,它们在性能和易用性上可能更有优势。因此,在选择JSON库时,应...

    json-lib-2.3-jdk15开发包和所有依赖包

    4. **XML与JSON互转**:除了基本的JSON操作,`json-lib`还提供了XML与JSON之间的转换功能,这对于需要在XML和JSON之间进行数据交换的应用非常有用。 5. **依赖包的集成**:`json-lib-2.3-jdk15`开发包包含了所有...

    json-lib-2.4和相应的依赖包

    5. **性能优化**:尽管有其他更现代的JSON库如Gson和Jackson,json-lib-2.4依然因其简洁的API和相对较低的内存占用而受到一些开发者青睐。 在实际开发中,json-lib-2.4的使用通常涉及以下步骤: 1. **导入依赖**:...

    json-lib-2.4-jdk15.jar及其相关依赖

    `json-lib`库的使用使得Java开发者在处理JSON数据时更加便捷,但需要注意的是,随着Java生态的发展,现在更流行的是使用Jackson、Gson或Google的AutoValue库来处理JSON,它们提供了更多特性和更好的性能。...

    json-lib 2.4 的 jar 包

    在Java中,JSON库如json-lib 2.4可以帮助开发者有效地处理JSON数据,进行数据的序列化与反序列化操作。本文将深入探讨json-lib 2.4这个jar包在Java开发中的应用。 json-lib是一个Java库,它提供了多种Java集合(如...

    json-lib-2.4 jar 程序文件

    7. **性能优化**:虽然JSON-Lib功能强大,但相比其他更现代的JSON库(如Jackson或Gson),其性能可能略低。因此,在性能敏感的应用中,可能需要权衡其便利性和效率。 总之,`json-lib-2.4 jar`为Java开发者提供了一...

    json-lib-2.4-jdk15.jar所需全部JAR包_JSON_

    1. **Jackson或Gson库**:这两个是其他流行的JSON库,可能会被`json-lib`用作底层实现的一部分,提供JSON序列化和反序列化的功能。 2. **Eclipse Collections**:可能用于提供高效的数据结构,如集合和映射,用于...

    json-lib-2.4-jdk15所需要的jar包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和服务器端...在现代的Java开发中,虽然有其他更现代的JSON库如Gson和Jackson,但`json-lib`仍然在一些遗留系统或特定场景下被使用。

    json-lib 需要的所有jar包

    通常,这样的集合可能包括json-lib自身的jar,以及它依赖的其他库,如Jackson、Gson、org.json等,因为Json-lib可能利用了这些库的功能来实现其功能。 具体到这个压缩包,文件名为“json.jar”,这很可能是json-lib...

    json-lib-jdk.jar

    需要注意的是,虽然`json-lib`在过去被广泛应用,但随着技术的发展,现在更推荐使用如Gson、Jackson或Fastjson这样的现代JSON库,它们通常具有更好的性能和更丰富的功能。然而,对于一些老旧的项目或者需要与旧系统...

    Java四大json库gson+fastjson+jackson+json-lib

    为了方便地处理JSON数据,Java社区提供了多个优秀的JSON库,包括Gson、Fastjson、Jackson和json-lib。这四大JSON库各有特点,适应不同的使用场景。 1. Gson: Gson是Google提供的一个开源库,它能够将Java对象转换...

    json-lib-2.1-jdk15.jar

    然而,随着时间的发展,json-lib的更新相对较慢,社区支持可能不如其他更现代的JSON库如Gson或Jackson活跃。这些新库提供了更多特性,比如类型安全的转换、注解支持以及更高效的性能。 总的来说,"json-lib-2.1-jdk...

    json-lib-2.4-jdk15源码和jar包

    - **JSON与XML的互转**:`json-lib`还支持JSON和XML之间的转换,这对于那些需要在两种格式间切换的应用场景非常实用。 - **类型适配器**:库提供了一种机制,允许自定义特定类型(如自定义类)到JSON的转换,通过...

    json-lib及依赖包

    JSON(JavaScript ...然而,随着技术的发展,现在有许多其他流行的JSON库,如Gson、Jackson和Fastjson,它们在性能和易用性方面可能更具优势。在选择JSON库时,开发者应根据项目需求、性能要求和团队熟悉度来决定。

    json-lib包最新合集20170403整理

    在JSON与Java对象之间进行转换时,这个库可能会被用来处理JavaBean对象的属性。 3. `commons-lang-2.3.jar`:Apache Commons Lang是一个实用工具类库,包含了一些对Java内置类的扩展和增强,比如字符串处理、日期...

    最新json-lib及其依赖库包.rar

    这些依赖库可能包括如Jackson、Gson等其他JSON处理库,或者是与数据序列化、网络通信相关的库,它们确保了json-lib功能的完整性和稳定性。 5. **更新的重要性**:描述中提到这是从官网下载的最新版本,这意味着它...

Global site tag (gtag.js) - Google Analytics