首页 > 编程语言 >IO输入输出流例子:Java对象输出json文本:

IO输入输出流例子:Java对象输出json文本:

时间:2024-07-13 21:57:43浏览次数:11  
标签:Java name gender age System json IO public String

读取文件:

原始字节输入流(低级):
public class CharCacheIOReader {
    public static void main(String[] args) {
        try(
                //原始字节输入流(低级)
                Reader fr= new FileReader("src\\OutputStream.txt");
                //创建一个字符缓冲输入流包装原始的字符输入流********
                BufferedReader br= new BufferedReader(fr)
        ) {
//            char[]buffer=new char[3];
//            int len;
//            while ((len=br.read(buffer))!=-1){
//                System.out.print(new String(buffer, 0, len));
//            }
            //读取每一行的字符 readLine(),用上循环。
            String line;
            while ((line=br.readLine())!=null){
                System.out.println(line);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

字节输出流:

  public static void main(String[] args) {
        try (Writer fw= new FileWriter("src\\OutputStream.txt",true);
                //创建一个字符缓冲输出流管道
                BufferedWriter bw=new BufferedWriter(fw);//有换行功能
        ) {
            bw.write('a');
            bw.write(97);
            bw.write('有');
            bw.newLine();
            bw.write("我爱你");
            bw.newLine();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

Java对象输出json文本:

pom文件导入fastjson2坐标:

 <dependency>
      <groupId>com.alibaba.fastjson2</groupId>
      <artifactId>fastjson2</artifactId>
      <version>2.0.51</version>
    </dependency>

自定义一个UserJson类:

package IO.jsonIO;

public class UserJson {
    public String getName() {
        return name;
    }

    @Override
    public String toString() {
        return "UserJson{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }

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

    public Integer getAge() {
        return age;
    }

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

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public UserJson(String name, Integer age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    private String name;
    private Integer age;
    private String gender;
}

测试代码:

public class JsonIO {
    public static final String JSON_SRC="src\\jsonText.json";
    public static void main(String[] args) {
        UserJson jsonObj = new UserJson("小美",25,"女");
        //转Json
        byte[] bytes = JSON.toJSONBytes(jsonObj);
        //写出
        try(OutputStream fo = new FileOutputStream(JSON_SRC,false);)//true:追加数据,false:不追加数据
        {
            fo.write(bytes);
            System.out.println(new String(bytes)+"输出成功");
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("Error");
        }
    //读取json文件
        try ( InputStream fi = new FileInputStream(JSON_SRC);)
        {
            byte[] jsonBytes = fi.readAllBytes();
             JSONReader jsonObject = JSONReader.of(jsonBytes);
            System.out.println(jsonObject.readString()+"读取成功!");
            //转换成java对象
             UserJson obj = JSON.parseObject(jsonBytes, UserJson.class);
            System.out.println(obj.toString());
            System.out.println("姓名:"+obj.getName());
            System.out.println("年龄:"+obj.getAge());
            System.out.println("性别:"+obj.getGender());
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("Error");
        }
    }
}

json文件样式:

测试结果:

{"age":25,"gender":"女","name":"小美"}输出成功
{"age":25,"gender":"女","name":"小美"}读取成功!
UserJson{name='小美', age=25, gender='女'}
姓名:小美
年龄:25
性别:女

json文件输出:

{"age":25,"gender":"女","name":"小美"}

嵌套一层Json:

 第一层类:
public class UserJson {
   private User user;
    public UserJson(User user) {
        this.user = user;
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
}

嵌套层类User:

package IO.jsonIO;

public class User {
    private String name;
    private Integer age;
    private String gender;

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }

    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 String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public User(String name, Integer age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
}

测试代码:

public class JsonIO {
    public static final String JSON_SRC="src\\jsonText.json";
    public static void main(String[] args) {
        User user = new User("小美",25,"女");
        UserJson jsonObj = new UserJson(user);
        //转Json
        byte[] bytes = JSON.toJSONBytes(jsonObj);
        //写出
        try(OutputStream fo = new FileOutputStream(JSON_SRC,false);)//true:追加数据,false:不追加数据
        {
            fo.write(bytes);
            System.out.println(new String(bytes)+"输出成功");
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("Error");
        }
    //读取json文件
        try ( InputStream fi = new FileInputStream(JSON_SRC);)
        {
            byte[] jsonBytes = fi.readAllBytes();
             JSONReader jsonObject = JSONReader.of(jsonBytes);
            System.out.println(jsonObject.readString()+"读取成功!");
            //只读user的name   JSONPath
            JSONPath userGet = JSONPath.of("$.user.name");
            //user.name
            Object extract = userGet.extract(jsonBytes);
            System.out.println(extract);

            //转换成java对象
             UserJson obj = JSON.parseObject(jsonBytes, UserJson.class);
            System.out.println(obj.getUser());
            System.out.println("姓名:"+obj.getUser().getName());
            System.out.println("年龄:"+obj.getUser().getAge());
            System.out.println("性别:"+obj.getUser().getGender());
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("Error");
        }
    }
}

测试结果:

{"user":{"age":25,"gender":"女","name":"小美"}}输出成功
{"user":{"age":25,"gender":"女","name":"小美"}}读取成功!
小美
User{name='小美', age=25, gender='女'}
姓名:小美
年龄:25
性别:女

Json文件:

{"user":{"age":25,"gender":"女","name":"小美"}}

 

标签:Java,name,gender,age,System,json,IO,public,String
From: https://blog.csdn.net/m0_70630103/article/details/140345043

相关文章

  • 【CPO-TCN-BiGRU-Attention回归预测】基于冠豪猪算法CPO优化时间卷积双向门控循环单元
    %数据准备%假设有一个输入变量X和一个目标变量Y%假设数据已经存储在X和Y中,每个变量为列向量%参数设置inputWindowSize=10;%输入窗口大小outputWindowSize=1;%输出窗口大小numFeatures=1;%输入变量的数量numFilters=32;%TCN中的滤波器数......
  • 每周JAVA学习汇总
    本周我自学了Java的输入与输出包括了:使用Scanner类进行输入导入Scanner类:importjava.util.Scanner;创建Scanner对象:Scannerscanner=newScanner(System.in);读取不同类型的数据:读取字符串:StringinputString=scanner.nextLine();读取整数:intinputInt=scanner.ne......
  • 自学Java第二周
    本周学习一、Java能干些什么?1.共三个版本:JavaSE、JavaEE、JavaMEJavaSE:Java语言的(标准版),用于桌面应用开发,是其他两个版本的基础。JavaME:Java语言的(小型版),用于嵌入式电子设备或者小型移动设备。JavaEE:Java语言的(企业版),用于Web方向的网站开发(浏览器和服务器)。在这......
  • Java学习第二周
    标识符是用来给变量,类,方法以及包进行命名的。标识符的命名规则1.必须以字母、下划线“”、美元符“$”开头。2.其他部分可以是字母、下划线“”、美元符“$”和数字的人员组合·。3.大小写敏感,且长度无限制。4.不可以是Java的关键字。标识符使用规范表示类名的标识符:每个单......
  • java 基本语法1
    1.安装idea,java编译器,编译器会自动对代码进行编译,然后运行得到结果.idea分为社区版(免费),企业版(收费),https://www.jetbrains.com/zh-cn/idea/download/?section=windows从官网下载对应版本安装即可.2.java的数据类型有四类八项.整数,小数,字符,布尔.其中整数:intlongbyt......
  • Ajax和Axios
    1.1Ajax介绍1.1.1Ajax概述我们前端页面中的数据,如下图所示的表格中的学生信息,应该来自于后台,那么我们的后台和前端是互不影响的2个程序,那么我们前端应该如何从后台获取数据呢?因为是2个程序,所以必须涉及到2个程序的交互,所以这就需要用到我们接下来学习的Ajax技术。Ajax:全......
  • [20240618]Oracle C functions annotations.txt
    [20240618]OracleCfunctionsannotations.txt--//网站orafun.info可以查询oraclecfunctions.CreatedbyFritsHooglandwithalittlehelpfromKamilStawiarski.--//可以通过它了解oracle内部C函数.实际上可以直接下载相关文件,在本地使用.https://gitlab.com/FritsHoog......
  • java1
    1.安装一个Java开发环境,我安装的是JDK(从b站上学习的安装教程以及如何配置环境变量等等);同时我也对此进行了初步的了解JDK即Java开发工具包。它是用于构建在Java平台上发布的应用程序、Applet和组件的开发环境。JDK包含了Java编译器、Java文档生成工具、Java打包工具等,是整个Java......
  • [Java IO] 流原理及流的分类
    JavaIO流概念JavaIO(输入/输出)流是Java用于处理输入和输出操作的一种方式。JavaIO系统主要基于流(Stream)的概念,流是一组有序的数据序列,可以是输入流(从数据源读取数据)或输出流(向数据目标写入数据)。JavaIO流分类按操作数据单位不同分为:字节流(8bit)如二进制文件;字符流......
  • 从零学习的JAVAday8~day14
    在安装eclipse时我们直接打开eclipse官网我们点击下载并安装到合适的位置即可。打开eclipse后我们就可以创建Java文件了然后再创建一个Java类,这样我们就可以在里面写我们第一个java代码了这就是我们的第一个代码,意思为输出“helloworld”。我们可以看到运行代码后输出了“he......