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

fastJson使用

2018年02月16日 ⁄ 综合 ⁄ 共 3542字 ⁄ 字号 评论关闭

   对于服务端返回的json格式数据,解析的方案还是不比较多的,这里推荐 fastjson,原因是使用简单、效率还是比较高的

   fastjson主要是我们在解析的时候要有对应的本地Bean来承接返回的jsonObject和jsonArray,直接通过一个例子来看看:

   假设我们从服务端获取的数据为:

 

String response = "{\"id\":\"2\",\"name\":\"节点01\",\"open\":true,\"pId\":\"1\",\"tree\":{\"color\":\"gree\",\"tree\":true}}";

  这是一个标准的json格式串,通过分析我们发现其结构分为两个部分:

    一个外围的Bean,有基本属性id、name、open、tree,以及一个Bean类型的属性tree.这个内部的bean也有自己的属性color、tree  

   那我们就本地生成对应的bean

       外部Bean:

package lavasoft.stu.json;

public class Node {

    private String id;
    private String pId;
    private String name;
    private boolean open;

    private Tree tree;

    public Node(String id, String pId, String name, boolean open, Tree tree) {
        super();
        this.id = id;
        this.pId = pId;
        this.name = name;
        this.open = open;
        this.tree = tree;
    }

    public Node() {
        // TODO Auto-generated constructor stub
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPId() {
        return pId;
    }

    public void setPId(String pId) {
        this.pId = pId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isOpen() {
        return open;
    }

    public void setOpen(boolean open) {
        this.open = open;
    }

    public Tree getTree() {
        return tree;
    }

    public void setTree(Tree tree) {
        this.tree = tree;
    }

}

   内部Bean:

package lavasoft.stu.json;

public class Tree {
    String color;
    boolean isTree;

    public Tree(String color, boolean isTree) {
        super();
        this.color = color;
        this.isTree = isTree;
    }


    public Tree() {
        // TODO Auto-generated constructor stub
    }


    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public boolean isTree() {
        return isTree;
    }

    public void setTree(boolean isTree) {
        this.isTree = isTree;
    }

}

fastJson解析方法:

package lavasoft.stu.json;

import java.util.HashMap;
import java.util.Map;

import com.alibaba.fastjson.JSON;

public class MainTest {

    public static void main(String[] args) {
        // 对象构造
        Node node = new Node("1", "12", "jone", false, new Tree("green", true));
        String jsonStr = JSON.toJSONString(node);
        System.out.println(jsonStr);
        Node node3 = JSON.parseObject(jsonStr, Node.class);
        System.out.println("FastJson解析结果[对象]" + node3.getName());
        System.out.println("////////////////////////");

        // 字符串构造
        String response = "{\"id\":\"2\",\"name\":\"节点01\",\"open\":true,\"pId\":\"1\",\"tree\":{\"color\":\"gree\",\"tree\":true}}";
        Node node4 = JSON.parseObject(response, Node.class);
        System.out.println("FastJson解析结果【字符串】:" + " is tree: "
                + node4.getTree().isTree() + "  **color:  "
                + node4.getTree().getColor() + "**name: " + node4.getName()
                + "**isopen: " + node4.isOpen());
        // util方法构造
        System.out.println("////////////////////////");
        Map<String, Object> map = new HashMap<>();
        map.put("color", "blue");
        map.put("tree", true);
        StringBuilder builder = new StringBuilder();
        builder.append("{").append(buildJsonParamByStrObject("节点02", "name"))
                .append(",").append(buildJsonParamByStrObject(true, "open"))
                .append(",").append(buildJsonParamByMapObject(map, "tree"))
                .append("}");
        System.out.println("builder " + builder.toString());
        Node node2 = JSON.parseObject(builder.toString(), Node.class);
        System.out.println("FastJson解析结果【util】:" + " is tree: "
                + node2.getTree().isTree() + "  **color:  "
                + node2.getTree().getColor() + "**name: " + node2.getName()
                + "**isopen: " + node2.isOpen());
    }

    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉 构造key:value 键值对
     */
    public static StringBuilder buildJsonParamByMapObject(
            Map<String, Object> params, String key) {
        StringBuilder builder = new StringBuilder();
        String val = JSON.toJSONString(params);
        builder.append("\"" + key + "\":" + val);
        return builder;
    }

    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉 构造key:value 键值对
     */
    public static StringBuilder buildJsonParamByStrObject(Object params,
            String key) {
        StringBuilder builder = new StringBuilder();
        String val = JSON.toJSONString(params);
        builder.append("\"" + key + "\":" + val);
        return builder;
    }

}

  fastJson可以解析任何类型的基础数据类型例如int、 string、boolen

   我写的一个小Demo http://download.csdn.net/detail/yaya_soft/8256245

抱歉!评论已关闭.