JSON

fastjson常用的方法总结

最近在写接口和转发器的时候代码里面遇到了很多报文格式转化的地方,就将fastjson的常用的方法总结一下。

JSONString转JSONObject:JSON字符串是普通的字符串,只是格式上符合JSON的格式,将JSONString转为JSONObject之后,可以通过jsonObject.getString(key)取到JSON对象的属性值,JSON串里面也可以嵌套JSON串,比如我的stuinfo为一个JSON串,同时里面的cname也是一个JSON串。

package JsonTest;

import com.alibaba.fastjson.JSONObject;

public class JSonStr2JSonObj {

    //将名为stuinfo的json串转化成JSonObject
    String stuinfo = "{\"id\":\"001\",\"name\":\"张三\",\"cname\":{\"school\":\"清华大学\",\"academy\":\"计算机学院\",\"major\":\"计算机科学与技术\",\"classid\":\"一班\"},\"gender\":\"男\"}";
    JSONObject jsonObject = JSONObject.parseObject(stuinfo);

    //通过key取出来的也为一个Json串;cname = {"classid":"一班","major":"计算机科学与技术","school":"清华大学","academy":"计算机学院"}
    String cname = jsonObject.getString("cname");

    //将名为cname的JsonString转化成JsonObjcet
    JSONObject jsonObject1 = JSONObject.parseObject(cname);
    String school = jsonObject1.getString("school");

    public static void main(String args[]) {
        JSonStr2JSonObj string2Json = new JSonStr2JSonObj();
        System.out.println(string2Json.stuinfo);
        System.out.println(string2Json.cname);
        System.out.println(string2Json.school);
    }
}

JSONString转JSONArray:将JSONString转换成JSONArray之后,可以通过下标取值。比如我的stuinfo里面的cname就是一个数组,但是数字里面存的是JSON对象。

package JsonTest;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class JSonStr2JSonArr {
    String stuinfo = "{\"id\":\"001\",\"name\":\"张三\",\"cname\":[{\"school\":\"清华大学\"},{\"academy\":\"计算机学院\"},{\"major\":\"计算机科学与技术\"},{\"classid\":\"一班\"}],\"gender\":\"男\"}";
    JSONObject jsonObject = JSONObject.parseObject(stuinfo);
    String cname = jsonObject.getString("cname");

    JSONArray jsonArray = JSONArray.parseArray(cname);
    String school = jsonArray.getString(1);


    public static void main(String args[]) {
        JSonStr2JSonArr jSonStr2JSonArr = new JSonStr2JSonArr();
        System.out.println(jSonStr2JSonArr.cname);
        System.out.println(jSonStr2JSonArr.school);
    }
}

JSONString转Map的几种方式

package JsonTest;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import java.util.Map;

public class JSont2Map {

    //将名为stuinfo的json串转化成JSONObject
    String stuinfo = "{\"id\":\"001\",\"name\":\"张三\",\"cname\":{\"school\":\"清华大学\",\"academy\":\"计算机学院\",\"major\":\"计算机科学与技术\",\"classid\":\"一班\"},\"gender\":\"男\"}";
    JSONObject jsonObject = JSONObject.parseObject(stuinfo);

    //通过key取出来的也为一个JSON串;cname = {"classid":"一班","major":"计算机科学与技术","school":"清华大学","academy":"计算机学院"}
    String cname = jsonObject.getString("cname");

    public static void main(String args[]) {
        JSont2Map jSont2Map = new JSont2Map();
        System.out.println(jSont2Map.cname);

        //第一种方法,用JSON类的parse来解析JSON字符串
        Map<String, String> myMaps = (Map<String, String>) JSON.parse(jSont2Map.cname);
        for (Object map : myMaps.entrySet()) {
            System.out.println(((Map.Entry) map).getKey() + "     " + ((Map.Entry) map).getValue());
        }

        //第二种方法,用JSON类的parseObject来解析字符串
        Map myMaps1 = JSON.parseObject(jSont2Map.cname);
        for (Object map : myMaps1.entrySet()) {
            System.out.println(((Map.Entry) map).getKey() + "     " + ((Map.Entry) map).getValue());
        }

        //第三种方法,用JSON类的parseObject指定解析类型来解析JSON字符串
        Map myMaps2 = JSON.parseObject(jSont2Map.cname, Map.class);
        for (Object key : myMaps2.keySet()) {
            System.out.println("键为:" + key + "    " + "值为:" + myMaps2.get(key));
        }

        //第四种方法,用JSONObject类的parse来解析JSON字符串
        Map myMaps3 = (Map) JSONObject.parse(jSont2Map.cname);
        for (Object map : myMaps3.entrySet()) {
            System.out.println(((Map.Entry) map).getKey() + "     " + ((Map.Entry) map).getValue());
        }

        //第五种方法,用JSONObject类的parseObject来解析字符串
        Map myMaps4 = JSONObject.parseObject(jSont2Map.cname);
        for (Object map : myMaps4.entrySet()) {
            System.out.println(((Map.Entry) map).getKey() + "     " + ((Map.Entry) map).getValue());
        }

        //第六种方法,用JSONObject类的parseObject指定解析类型来解析JSON字符串
        Map myMaps5 = JSONObject.parseObject(jSont2Map.cname, Map.class);
        for (Object key : myMaps5.keySet()) {
            System.out.println("键为:" + key + "    " + "值为:" + myMaps5.get(key));
        }

    }
}

JSONObject转JSON

package JsonTest;

import com.alibaba.fastjson.JSONObject;
public class Obj2JSON {
    //将名为stuinfo的json串转化成JSONObject
    String stuinfo = "{\"id\":\"001\",\"name\":\"张三\",\"cname\":{\"school\":\"清华大学\",\"academy\":\"计算机学院\",\"major\":\"计算机科学与技术\",\"classid\":\"一班\"},\"gender\":\"男\"}";
    JSONObject jsonObject = JSONObject.parseObject(stuinfo);

    //通过key取出来的也为一个JSON串;cname = {"classid":"一班","major":"计算机科学与技术","school":"清华大学","academy":"计算机学院"}
    String cname = jsonObject.getString("cname");
    JSONObject jsonObject1 = JSONObject.parseObject(cname);

    public static void main(String[] agrs) {
        Obj2JSON obj2JSON = new Obj2JSON();
        String json = (String) JSONObject.toJSON(obj2JSON.cname);
        System.out.println(json instanceof String);
        String str = JSONObject.toJSONString(obj2JSON.cname);
        System.out.println(str instanceof String);
    }
}

JSON的字符串在开发中经常用到,Http+json串形式是常见的通讯格式,后端接收到JSON串需要解析出报文的参数,然后去做出相应的处理;请求发送成功后,也需要将进行转化然后返回给前端。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值