现在的位置: 首页 > 综合 > 正文

java Jackson 库操作 json 的基本演示

2013年09月30日 ⁄ 综合 ⁄ 共 3342字 ⁄ 字号 评论关闭

核心库下载地址

http://repo1.maven.org/maven2/com/fasterxml/jackson/core/

jackson-annotations-2.2.2.jar

jackson-core-2.2.2.jar

jackson-databind-2.2.2.jar

 

文件类型支持模块

http://repo1.maven.org/maven2/com/fasterxml/jackson/dataformat/

jackson-dataformat-xml-2.2.2.jar

 

导入库

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonEncoding;
import com.fasterxml.jackson.core.JsonParseException;

 

  /**
   * Map 转换为 json
   */
  public static void MyTest01()
  {
    Map<String, String> hashMap = new HashMap<String, String>();
    hashMap.put("name", "zhang");
    hashMap.put("sex", "1");
    hashMap.put("login", "Jack");
    hashMap.put("password", "123abc");

    try
    {
      ObjectMapper objectMapper = new ObjectMapper();
      String userMapJson = objectMapper.writeValueAsString(hashMap);

      JsonNode node = objectMapper.readTree(userMapJson);

      // 输出结果转意,输出正确的信息
      System.out.println(node.get("password").asText());
      // 输出不转意,输出结果会包含"",这是不正确的,除非作为json传递,如果是输出结果值,必须如上一行的操作
      System.out.println(node.get("name"));
    }
    catch (IOException e)
    {
    }
  }

 

/**
   * 解析 json 格式字符串
   */
  public static void MyTest03()
  {
    try
    {
      String str = "{\"data\":{\"birth_day\":7,\"birth_month\":6},\"errcode\":0,\"msg\":\"ok\",\"ret\":0}";

      ObjectMapper mapper = new ObjectMapper();
      JsonNode root = mapper.readTree(str);

      JsonNode data = root.path("data");

      JsonNode birth_day = data.path("birth_day");
      System.out.println(birth_day.asInt());
      
      JsonNode birth_month = data.path("birth_month");
      System.out.println(birth_month.asInt());

      JsonNode msg = root.path("msg");
      System.out.println(msg.textValue());
    }
    catch (IOException e)
    {
    }
  }

 

/**
   * json 直接提取 值
   */
  public static void MyTest05()
  {
    try
    {
      // 演示字符串
      String str = "{\"data\":{\"hasnext\":0,\"info\":[{\"id\":\"288206077664983\",\"timestamp\":1371052476},{\"id\":\"186983078111768\",\"timestamp\":1370944068},{\"id\":\"297031120529307\",\"timestamp\":1370751789},{\"id\":\"273831022294863\",\"timestamp\":1369994812}],\"timestamp\":1374562897,\"totalnum\":422},\"errcode\":0,\"msg\":\"ok\",\"ret\":0,\"seqid\":5903702688915195270}";

      ObjectMapper mapper = new ObjectMapper();
      JsonNode root = mapper.readTree(str);

      // 提取 data
      JsonNode data = root.path("data");
      // 提取 info
      JsonNode info = data.path("info");

      System.out.println(info.size());

      // 得到 info 的第 0 个
      JsonNode item = info.get(0);
      System.out.println(item.get("id"));
      System.out.println(item.get("timestamp"));

      // 得到 info 的第 2 个
      item = info.get(2);
      System.out.println(item.get("id"));
      System.out.println(item.get("timestamp"));

      // 遍历 info 内的 array
      if (info.isArray())
      {
        for (JsonNode objNode : info)
        {
          System.out.println(objNode);
        }
      }

    }
    catch (Exception e)
    {

    }
  }

 

  /**
   * 创建一个 json,并向该 json 添加内容
   */
  public static void MyTest07()
  {
    try
    {
      ObjectMapper mapper = new ObjectMapper();
      ObjectNode root1 = mapper.createObjectNode();

      root1.put("nodekey1", 1);
      root1.put("nodekey2", 2);

      System.out.println(root1.toString());

    //Create the root node
      ObjectNode root = mapper.createObjectNode ();
      //Create a child node
      ObjectNode node1 = mapper.createObjectNode ();
      node1.put ("nodekey1", 1);
      node1.put ("nodekey2", 2);
      //Bind the child nodes
      root.put ("child", node1);
      //Array of nodes
      ArrayNode arrayNode = mapper.createArrayNode ();
      arrayNode.add (node1);
      arrayNode.add (1);
      //Bind array node
      root.put ("arraynode", arrayNode);

      System.out.println (mapper.writeValueAsString (root));
    }
    catch (Exception e)
    {

    }
  }

 

参考资料

http://wiki.fasterxml.com/JacksonInFiveMinutes

 

抱歉!评论已关闭.