加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

fastJson使用

发布时间:2020-12-16 19:40:00 所属栏目:百科 来源:网络整理
导读:对于服务端返回的json格式数据,解析的方案还是不比较多的,这里推荐 fastjson,原因是使用简单、效率还是比较高的 fastjson主要是我们在解析的时候要有对应的本地Bean来承接返回的jsonObject和jsonArray,直接通过一个例子来看看: 假设我们从服务端获取的数

对于服务端返回的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","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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读