JSON

JackSon学习笔记(二)

字号+ 作者:H5之家 来源:H5之家 2016-10-24 17:00 我要评论( )

概述 jackson解析json例子 准备工作 基于JDK1.7,依赖Jackson框架类库: jackson-core-2.5.3.jar jackson-databind-2.5.3.jar Example 下面的例子是基于Jackson 2

概述

jackson解析json例子

准备工作

基于JDK1.7,依赖Jackson框架类库:

jackson-core-2.5.3.jar
jackson-databind-2.5.3.jar

Example

下面的例子是基于Jackson 2.x版本的树模型的Json解析。

要解析的Json字符串:

String data = { "type":2,"range":1,"start":1368417600,"end":1368547140,"cityName":"天津", "companyIds":["12000001"], "companyNames":["天津"], "12000001":{ "data":[47947,48328,48573,48520], "timestamps":[1368417600,1368417900,1368418200,1368418500] } }

示例代码:

package com.cennavi.dqe.test; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class ParseJsonTest { /** * @param args */ public static void main(String[] args) { String data = "{\"type\":2,\"range\":1,\"start\":1368417600,\"end\":1368547140," + "\"cityName\":\"天津\",\"companyIds\":[\"12000001\"],\"companyNames\":[\"天津\"]," + "\"12000001\":{\"data\":[47947,48328,48573,48520]," + "\"timestamps\":[1368417600,1368417900,1368418200,1368418500]}}"; String data2 = parseJson(data); System.out.println(data2); } public static String parseJson(String data) { // 用来展现解析Json得到的值 StringBuffer buf = new StringBuffer(); try { ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode = mapper.readTree(data); // 读取Json // rootNode.path("xx")返回的还是一个JsonNode对象,调用该JsonNode的相应方法,得到键对应的值 int type = rootNode.path("type").asInt(); int range = rootNode.path("range").asInt(); long start = rootNode.path("start").asLong(); long end = rootNode.path("end").asLong(); String cityName = rootNode.path("cityName").asText(); // 转换时间格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm"); sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); String str = "类型(type):" + type + "\r\n" + "范围(range):" + range + "\r\n" + "开始时间(start):" + sdf.format(new Date(start * 1000)) + "\r\n" + "结束时间(end):" + sdf.format(new Date(end * 1000)) + "\r\n" + "城市名称(cityName):" + cityName; buf.append(str); // 得到companyIds的JsonNode对象 JsonNode companyIds = rootNode.path("companyIds"); JsonNode companyNames = rootNode.path("companyNames"); // 遍历companyIds中的内容 for (int i = 0; i < companyIds.size(); i++) { String companyId = companyIds.get(i).asText(); // 本例解析的Json字符串中companyIds与companyNames的长度是相同的,所有直接遍历companyNames String companyName = companyNames.get(i).asText(); // companyId的值:12000001,对应Json串中的 // "12000001":{"data":[...],"timestamps":[....]} JsonNode infoNode = rootNode.path(companyId); // 得到"12000001":{"data":[...],"timestamps":[....]}中的data和timestamps的JsonNode对象 JsonNode dataNode = infoNode.path("data"); JsonNode timestampsNode = infoNode.path("timestamps"); // 遍历data和timestamps 本例中data.size与timestamps.size是相等的 buf.append("\r\n{\r\n 公司ID(companyId):" + companyId + "\r\n 公司名称(companyName):" + companyName + "\r\n" + " data:"); for (int j = 0; j < dataNode.size(); j++) { long dataValue = dataNode.get(j).asLong(); buf.append(dataValue + ","); } buf.append("\r\n time:"); for (int k = 0; k < timestampsNode.size(); k++) { long timeValue = timestampsNode.get(k).asLong(); buf.append(sdf.format(new Date(timeValue * 1000)) + ","); } buf.append("\r\n}\r\n"); } } catch (JsonProcessingException e) { e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } return buf.toString(); } }

测试结果:

类型(type):2 范围(range):1 开始时间(start):201305131200 结束时间(end):201305142359 城市名称(cityName):天津 { 公司ID(companyId):12000001 公司名称(companyName):天津 data:47947,48328,48573,48520, time:201305131200,201305131205,201305131210,201305131215 }

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • AngularJs学习笔记(二)

    AngularJs学习笔记(二)

    2016-10-24 16:00

  • Json.Net6.0入门学习篇 - aehyok

    Json.Net6.0入门学习篇 - aehyok

    2016-10-23 17:00

  • gson笔记 解析json数据

    gson笔记 解析json数据

    2016-10-06 15:00

  • Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson vs. JSONP

    Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson vs. J

    2016-09-21 12:00

网友点评