fastJson 解析json字符串

package com.zhw.project.domain;

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


import java.util.ArrayList;
import java.util.List;


public class TextJson
{
    //定义内部类用于接收json字符串的java的实体类
    static class JsonUser{
        private String name;

        private Integer age;

        public String getName() {
            return name;
        }

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

        public Integer getAge() {
            return age;
        }

        public void setAge(Integer age) {
            this.age = age;
        }
    }

    public static void main(String[] args) {
        //json字符串各种解析
        //定义测试的json字符串
        String str = "{\"code\":0,\"data\":{\"name\":\"你好\",\"age\":29}}";

        //一,使用fastjson对json字符串进行解析
        //1,json简单解析

        //将json字符串 json格式化
        JSONObject jsonObject = JSON.parseObject(str);
        //获取json对象中的code
        Integer code = jsonObject.getInteger("code");
        System.out.println("解析简单的json字符串");
        System.out.println("code:"+code);
        //获取data 由于data为json字符串类型 可以直接使用getJSONObject方法 返回一个json格式化后的对象
        JSONObject data = jsonObject.getJSONObject("data");
        //获取data中的name值
        String name = data.getString("name");
        Integer age = data.getInteger("age");
        //打印
        System.out.println("name:"+name+"-"+"age:"+age);



        //2,使用java对象接收json字符串
        //获取data字符串 由于要将字符串转成对象 所以这边使用getString方法
        String data1 = jsonObject.getString("data");
        //使用fastjson将json字符串转成java对象  data1为json类型的字符串,JsonUser.class为要转成的实体类对象
        //fast会将json字符串中的key与java实体类中的属性进行对应,所以实体类的属性名要与json字符串中的key相同
        JsonUser jsonUser = JSON.parseObject(data1, JsonUser.class);
        System.out.println("使用javabean解析json字符串");
        System.out.println("name:"+jsonUser.getName()+"-"+"age:"+jsonUser.getAge());


        //3,解析带有数组(集合)的json字符串
        //定义json字符串
        String jsonArray = "{\"code\":0,\"data\":[{\"name\":\"你好\",\"age\":29},{\"name\":\"你好1\",\"age\":25}]}";
        //将json字符串json格式化
        JSONObject jsonObject1 = JSON.parseObject(jsonArray);
        //获取json字符串中的data,data为jsonarray类型
        JSONArray data2 = jsonObject1.getJSONArray("data");
        System.out.println("普通解析JSONArray字符串");
        //遍历data2 JSONArray数组
        //JSONArray的类型为Object
        for (Object obj:data2){
            //循环打印
            JSONObject jsonObject2 = JSON.parseObject(obj.toString());
            System.out.println("name:"+jsonObject2.getString("name")+"-"+"age:"+jsonObject2.getInteger("age"));
        }


        //4,解析带有数组的json字符串 使用java对象接收
        //使用parseArray方法  第一个参数为json格式的json数组字符串,第二个参数为接收的实体类类型
        System.out.println("javaBean解析JSONArray字符串");
        List<JsonUser> jsonUsers = JSON.parseArray(jsonObject1.getString("data"),JsonUser.class);
        for (JsonUser ju:jsonUsers){
            System.out.println("name:"+ju.getName()+"-"+"age:"+ju.getAge());
        }

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值