Java Json解析方式以及IDEA的Json转换插件

本文详细介绍了Java中使用Fastjson库解析和操作Json数据的方法,包括基本的Json格式、键值对处理、数组解析,以及如何将Java对象转换为Json字符串和反序列化Json字符串为对象。
摘要由CSDN通过智能技术生成

Java Json解析方式

Json定义:

​ ① Json 表示的是文本数据的一种表示格式
​ ② Json 格式的文件在数据开发过程中经常能够使用到
​ ③ 一个JONS表示为一个对象(没有方法的对象),那么就有属性名和属性值
​ 数据形式 => Key Value形式 => Key表示为属性名 Value表示属性值
​ Json文件中的数据有固定的格式
​ 格式:

                   1. Json文件需要使用{}进行将所有的数据包含起来
                                          2. Json中 Key Value形式 使用:将Key和Value隔开
                                          3. 对于Json中的Key形式 要求只能为一个字符串 (其他语言中要求Key是一个不可变的数据即可)
                                                                 4. 对于Json中的Value形式不固定,可以为 字符串 数值 小数点 ...
                                                                 5. 对于多个KeyValue数据要求使用 , 对其进行隔开
                                                                                        6. 对于多个Json可以使用数组形式表示 其格式可以用 [json,json]
                                                                                        7. 对于Json中的Value可以是一个Json
                                                                                                               8. 对于Json中的Value可以是一个Json数组
                                                        json取值:
                                                                            需要使用编码的方式,将当前的Json文本加载到对应的对象中(以Java为例),通过操作对象,获取其中的数据
                                                                            ① 对于fastJson2包中,可以通过JSON类中静态方法parse对数据进行解析
                                                                            ② 获取数据是通过Key进行获取的
                                                                                                对于Value类型可以通过不同的方法进行选择不同的返回值类型
                                                                            ③ 在Java的字符串中,可以使用''来代替 ""
                                                                            ④ 对于JSON数组和JSON对象需要使用不同的解析方式

Java解析Json

​ Java中解析Json可以使用第三方的Json Jar包
​ 第三方jar包是指 由其他开发者所提供的库,在提供的库中会由相对应的类来完成特点的功能
​ 例如: python -> pip install 按照第三方包

​ Java中获取及如何使用第三方包?

获取fastjson2-2.0.40.jar

获取包的方式:

1.去对应提供包的第三方官网下载

2.去集中的仓库中下载对应的包(MVN的仓库https://mvnrepository.com/)

在这里插入图片描述

找到对应版本

在这里插入图片描述

点击jar下载

在这里插入图片描述

下一步,导入idea中

在IDEA项目根路径中创建目录lib并将jar包复制到当前lib目录下

在这里插入图片描述

右键选择jar包,再点击add as…(添加到库)

在这里插入图片描述

点击OK

在这里插入图片描述

如何看是否导进去?

项目结构里面查看如:

在这里插入图片描述

Json解析实际操作

package com.test.demo23;

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

public class Demo12Json {
    public static void main(String[] args) {
         /*
            JSON.parse 可以对Json的字符串进行解析
         */
        String str="{'1':'one','2':'two'}";
        Object parse = JSON.parse(str);// 直接返回的是一个Object对象 但是对于Json有专门的Json对象 JSONObject
        JSONObject jsonObject = JSON.parseObject(str);//返回JSONObject对象
        String value = jsonObject.getString("1");//JSONObject获取key值2,返回value值
        System.out.println("value:"+value);//value:one

        String jsonStr = "{'name':'王建军','age': 20,'score':80.5}";
        JSONObject jsonObject2 = JSON.parseObject(jsonStr);
        String name = jsonObject2.getString("name");
        System.out.println("name:" + name);

        Integer age = jsonObject2.getInteger("age");
        System.out.println("age:" + age);

        Double score = jsonObject2.getDouble("score");
        System.out.println("score:" + score);

        //Json数组
        String jsonArr = "[{'name':'王建军','age': 20,'score':80.5},{'name':'张胜兵','age': 18,'score':90.5}]";
        //转换成Json数组
        JSONArray jsonArray = JSON.parseArray(jsonArr);
        // 数组可以通过下标进行取值
        JSONObject jsonObjectIndex1 = jsonArray.getJSONObject(1);
        System.out.println("name:"+jsonObjectIndex1.getString("name"));//name:张胜兵

        // fori形式获取
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject jsonObjectIndex = jsonArray.getJSONObject(i);
            String oneName = jsonObjectIndex.getString("name");
            System.out.println(oneName);
        }
        //王建军
        //张胜兵

    }
}

package com.test.demo23;

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

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

public class Demo13ToJson {
    public static void main(String[] args) throws FileNotFoundException {

        /*
            在fastJson2包中:对于一个对象,如果要转成JSON,那么对象中需要设置get Set 方法
         */

        // 创建ArrayList并添加User对象
        ArrayList<User> arrayList = new ArrayList<>();
        arrayList.add(new User("李帅臻", "1314520"));
        arrayList.add(new User("李真师", "3344520"));

        // 将对象转换成JSON字符串并打印
        //方式一
        for (User user : arrayList) {
            JSONObject json = (JSONObject) JSON.toJSON(user);
            System.out.println(json.toString());
            //方式二
            String jsonString = JSON.toJSONString(user);
            System.out.println(jsonString);
            // 直接将数据写入到一个Json文件中
//            JSON.writeTo(new FileOutputStream("data/user.json",true),user);
        }
        //上述结果:
        /*
        {"name":"李帅臻","passwd":"1314520"}
        {"name":"李帅臻","passwd":"1314520"}
        {"name":"李真师","passwd":"3344520"}
        {"name":"李真师","passwd":"3344520"}
         */
        // 使用间接的方式将 ArrayList转成一个 JSONArray
        JSONArray jsonArray = new JSONArray();
        for (User user : arrayList) {
            Object json = JSON.toJSON(user);
            jsonArray.add(json);
        }
        // [{"name":"李帅臻","passwd":"1314520"},{"name":"李真帅","passwd":"3344520"}]
        System.out.println(jsonArray.toString());


        // jsonArray 如何转成一个ArrayList
        // 可以将JSON字符串转成一个List集合
        List<User> users = JSON.parseArray(jsonArray.toString(), User.class);
        System.out.println(users);
        //[User{name='李帅臻', passwd='1314520'}, User{name='李真师', passwd='3344520'}

        // 将一个json字符串对象转成自定义对象
        User user = JSON.parseObject("{\"name\":\"李真帅\",\"passwd\":\"3344520\"}", User.class);
        System.out.println(user);
        //User{name='李真帅', passwd='3344520'}
    }

    // 定义User类
    static class User {
        private String name;
        private String passwd;

        public User(String name, String passwd) {
            this.name = name;
            this.passwd = passwd;
        }

        public String getName() {
            return name;
        }

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

        public String getPasswd() {
            return passwd;
        }

        public void setPasswd(String passwd) {
            this.passwd = passwd;
        }

        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", passwd='" + passwd + '\'' +
                    '}';
        }
        // getter和setter方法省略...
    }
}

toString() {
return “User{” +
“name='” + name + ‘’’ +
“, passwd='” + passwd + ‘’’ +
‘}’;
}
// getter和setter方法省略…
}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值