`
mglslg
  • 浏览: 15974 次
  • 性别: Icon_minigender_2
  • 来自: 内蒙古
社区版块
存档分类
最新评论

spring框架中的jackson解析json方法

阅读更多
从CSDN上的一人的博客中转的,他的博客地址为:http://blog.csdn.net/wyc_cs/article/details/6679722

package com.bbs.utils.json;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.JsonNodeFactory;

public class JacksonTest {
 private static JsonGenerator jsonGenerator = null;
 private static ObjectMapper objectMapper = null;
 private static User user = null;

 public static void writeEntity2Json() throws IOException {
  System.out.println("使用JsonGenerator转化实体为json串-------------");
  // writeObject可以转换java对象,eg:JavaBean/Map/List/Array等
  jsonGenerator.writeObject(user);
  System.out.println();
  System.out.println("使用ObjectMapper-----------");
  // writeValue具有和writeObject相同的功能
  objectMapper.writeValue(System.out, user);
 }

 public static void writeList2Json() throws IOException {
  List<User> userList = new ArrayList<User>();
  userList.add(user);
  User u = new User();
  u.setUid(10);
  u.setUname("archie");
  u.setUpwd("123");
  userList.add(u);
  objectMapper.writeValue(System.out, userList);
 }

 public static void writeMap2Json() {
  try {
   Map<String, Object> map = new HashMap<String, Object>();
   User u = new User();
   u.setUid(10);
   u.setUname("archie");
   u.setUpwd("123");
   map.put("uid", u.getUid());
   map.put("uname", u.getUname());
   map.put("upwd", u.getUpwd());
   System.out.println("jsonGenerator");
   jsonGenerator.writeObject(map);
   objectMapper.writeValue(System.out, map);
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 public static void writeOthersJSON() {
  try {
   String[] arr = { "a", "b", "c" };
   System.out.println("jsonGenerator");
   String str = "hello world jackson!";
   // byte
   jsonGenerator.writeBinary(str.getBytes());
   // boolean
   jsonGenerator.writeBoolean(true);
   // null
   jsonGenerator.writeNull();
   // float
   jsonGenerator.writeNumber(2.2f);
   // char
   jsonGenerator.writeRaw("c");
   // String
   jsonGenerator.writeRaw(str, 5, 10);
   // String
   jsonGenerator.writeRawValue(str, 5, 5);
   // String
   jsonGenerator.writeString(str);
   jsonGenerator.writeTree(JsonNodeFactory.instance.POJONode(str));
   System.out.println();
   // Object
   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();// }
   User u = new User();
   user.setUid(5);
   user.setUname("tom");
   user.setUpwd("123");
   user.setNumber(3.44);
   // complex Object
   jsonGenerator.writeStartObject();// {
   jsonGenerator.writeObjectField("uid", u);// user:{bean}
   jsonGenerator.writeObjectField("infos", arr);// infos:[array]
   jsonGenerator.writeEndObject();// }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 /**
  * JSON字符串转换为对象
  */
 public static void readJson2Entity() {
  String json = "{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}";
  try {
   User acc = objectMapper.readValue(json, User.class);
   System.out.println(acc.getUid());
   System.out.println(acc);
  } catch (JsonParseException e) {
   e.printStackTrace();
  } catch (JsonMappingException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 /**
  * JSON转换为List对象
  */
 public static void readJson2List() {
  String json = "[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"},"
    + "{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}]";
  try {
   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转换为数组对象
  */
 public static void readJson2Array() {
  String json = "[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"},"
    + "{\"uid\":2,\"uname\":\"sdfsdf\",\"number\":4745,\"upwd\":\"23456\"}]";
  try {
   User[] arr = objectMapper.readValue(json, User[].class);
   System.out.println(arr.length);
   for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
   }
  } catch (JsonParseException e) {
   e.printStackTrace();
  } catch (JsonMappingException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 /**
  * JSON转换为Map对象
  */
 public static void readJson2Map() {
  String json = "{\"success\":true,\"A\":{\"address\": \"address2\",\"name\":\"haha2\",\"id\":2,\"email\":\"email2\"},"+  
  "\"B\":{\"address\":\"address\",\"name\":\"haha\",\"id\":1,\"email\":\"email\"}}";
  try {
   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();
  }
 }

 public static void main(String[] args) {
  user = new User();
  user.setUid(5);
  user.setUname("tom");
  user.setUpwd("123");
  user.setNumber(3.44);
  objectMapper = new ObjectMapper();
  try {
   //jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(System.out, JsonEncoding.UTF8);
   // writeEntity2Json();
   // writeMap2Json();
   // writeList2Json();
   // writeOthersJSON();
   // readJson2Entity();
   // readJson2List();
//   readJson2Array();
   readJson2Map();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}


 

========================User.java==============

package com.bbs.utils.json;

public class User {
 private int uid;
 private String uname;
 private String upwd;
 private double number;
 public double getNumber() {
  return number;
 }
 public void setNumber(double number) {
  this.number = number;
 }
 public int getUid() {
  return uid;
 }
 public void setUid(int uid) {
  this.uid = uid;
 }
 public String getUname() {
  return uname;
 }
 public void setUname(String uname) {
  this.uname = uname;
 }
 public String getUpwd() {
  return upwd;
 }
 public void setUpwd(String upwd) {
  this.upwd = upwd;
 }
 
}



分享到:
评论

相关推荐

    springboot整合Jackson实例项目-附工具类

    Spring MVC 的默认 json 解析器便是 Jackson。 Jackson 优点很多。 Jackson 所依赖的 jar 包较少 ,简单易用。与其他 Java 的 json 的框架 Gson 等相比, Jackson 解析大的 json 文件速度比较快;Jackson 运行时...

    Jackson2.10.3.zip

    Jackson 是当前用的比较广泛的,用来序列化和反序列化 json 的 Java 的开源框架,是目前最流行的 json 解析器之一 , Spring MVC 的默认 json 解析器便是 Jackson。与其他 Java 的 json 的框架 Gson 等相比, ...

    jersey-jwt-springsecurity:具有JWT身份验证的REST API的示例,该示例使用Spring Boot,Spring Security,Jersey和Jackson

    使用Jersey和Spring Security的具有JWT身份验证的REST API 此示例应用程序演示了如何使用以下方法执行基于令牌的身份验证: ... JJWT:用于在Java中创建和解析JSON Web令牌(JWT)的库。 注意:对于没有Spring的C

    Jackson压缩包

    Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”。 压缩包内包含了spring requestBody注解解析的所需的三个jar包

    spring security 参考手册中文版

    Spring框架 22 2.4.2 Gradle 23 Gradle存储库 23 使用Spring 4.0.x和Gradle 24 2.4.3项目模块 25 核心 - spring-security-core.jar 25 远程处理 - spring-security-remoting.jar 25 Web - spring-security-web.jar ...

    microservices-springboot:带有Spring Boot,Zuul,Eureka,MongoDB和RabbitMQ的微服务应用程序示例

    使用Spring Boot,Zuul,Eureka,MongoDB和RabbitMQ的示例微服务应用程序 示例微服务应用程序,用于使用以下方法管理产品和购物清单: Spring Boot:用于创建独立Java应用程序的框架。 泽西岛:用于在Java中创建...

    java漏洞汇总.docx

    java漏洞汇总,ackson是一套开源的java序列化与反序列化工具框架,可将java对象序列化为xml和json格式的字符串并提供对应的反序列化过程。由于其解析效率较高,Jackson目前是Spring MVC中内置使用的解析方式

    java开源包1

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包11

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包2

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包3

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包6

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包5

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包10

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包4

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包8

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包7

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包9

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    java开源包101

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

    Java资源包01

    它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式...

Global site tag (gtag.js) - Google Analytics