[学习小笔记] Gson的基本使用

    今天在来记录一下以前做过的关于gSon读取的和存储的简单例子,记录一下基本的使用方法,以免自己忘记了难以查询。
    首先需要关于gSon的jar包:
    链接:http://pan.baidu.com/s/1pKZIb27 密码:xtm5
    我学习的方向是Java,就以一个简单的swing窗体来简单的展示一下gSon的基本使用方法。在这个窗体中我们主要实现登录和注册的功能,但是不通过数据库保存账号,只通过gSon保存到该工程文件中。
    首先我们先做一个简单的窗体:
public class Gson_test_1 {
    JFrame jframe;
    JLabel jl1, jl2;
    JTextField jf;
    JPasswordField jpf;
    JButton jb1, jb2;
    FileOutputStream fos = null;
    FileInputStream fis = null;
    List<Users> list = new ArrayList<Users>();  
    // 定义一个init方法用来调用显示窗体
    public void init() {
        jframe = new JFrame("登录");
        jframe.setLayout(new GridLayout(3, 2));
        // 账号
        jl1 = new JLabel("账号:");
        jf = new JTextField();
        // 密码
        jl2 = new JLabel("密码:");
        jpf = new JPasswordField();
        // 按钮
        jb1 = new JButton("登录");
        jb2 = new JButton("注册");
        // 添加组件
        jframe.getContentPane().add(jl1);
        jframe.getContentPane().add(jf);
        jframe.getContentPane().add(jl2);
        jframe.getContentPane().add(jpf);
        jframe.getContentPane().add(jb1);
        jframe.getContentPane().add(jb2);
        // 设置窗体
        jframe.setVisible(true);
        jframe.setDefaultCloseOperation(3);
        jframe.setBounds(200, 200, 400, 300);
    }
}
    这样,一个简单的swing窗体就创建好了,然后我们可以写一个main方法先运行看一下。
public static void main(String[] args) {
        new Gson_test_1().init();
}

    当然这个窗体是非常丑的,但是……无!所!谓!
    好,接下来我们先给注册按钮添加事件,当用户点击注册时就会把他填写的账号和密码保存到本地文件中。
// 为注册按钮添加事件
jb2.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        // 获取输入的账号和密码
        String id = jf.getText();
        String psd = jpf.getText();
        // Users是一个实体类,随便编写一个简单的实体类就可以了
        Users user = new Users();
        user.setId(id);
        user.setPassword(psd);
        Gson gson = new Gson();
        if (id.length() > 1 && psd.length() > 1) {
            try {
                // 实例化输入流
                fis = new FileInputStream("Users.txt");
                // 创建字节数组,保存文件中的数据
                byte[] data = new byte[(int) new File("Users.txt").length()];
                // 读取数据
                fis.read(data);
                // 这里我们需要判断一下这个文件里面是否包含数据,如果没有数据的话是不能够转化成字符串的,不然会报错
                if(data.length == 0) {
                    list.add(user);
                } else {
                    // 转化为字符串
                    String str = new String(data);
                    // 如果此时文件中已经有数据了,这个时候我们就需要将gSon数据转化为list集合,然后将用户输入的账号和密码添加到这个list集合当中
                    list = gson.fromJson(str, new TypeToken<List<Users>>(){}.getType());
                    list.add(user);
                }
                // 然后我们将添加了新用户账号的集合再以gSon的格式转化成字符串,最后输出保存,覆盖掉原先的文件内容
                String db = null;
                db = gson.toJson(list);
                fos = new FileOutputStream("Users.txt");
                // 输出
                fos.write(db.getBytes());
                // 这里就是弹出一个提示框
                JOptionPane.showMessageDialog(null, "注册成功!", "消息提示", 1);
            } catch (FileNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    }
});
    注册按钮的功能就基本实现了,接下来我们来实现登录按钮的功能。主要的实现步骤都是差不多的,只是登录中对读取到的数据进行了一个遍历,接下来看源码:
// 为登录按钮添加点击事件
jb1.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        // 获取输入的账号和密码
        String id = jf.getText();
        String psd = jpf.getText();
        if (id.length() > 1 && psd.length() > 1) {
            try {
                // 实例化输入流
                fis = new FileInputStream("Users.txt");
                // 创建字节数组,保存文件中的数据
                byte[] data = new byte[(int) new File("Users.txt").length()];
                // 读取数据
                fis.read(data);
                // 转化为字符串
                String str = new String(data);
                Gson gson = new Gson();
                // 用list集合保存查询到的用户信息
                list = gson.fromJson(str, new TypeToken<List<Users>>() {}.getType());
                // 这里就是用for循环匹配用户输入的账号和密码是否正确
                for (Users u : list) {
                    if (id.equals(u.getId()) && psd.equals(u.getPassword())) {
                        JOptionPane.showMessageDialog(null, "登录成功!", "消息提示", 1);
                        break;
                    }
                }
            } catch (FileNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
    }
});


    这样就是gSon的基本的使用方法了。只需要懂最基本的用法,在其他的语言中也可以灵活的运用,比如在Android中实现本地存储,简单的一些也是可以用gSon来完成的。当然了,我学习的还只是最基础的一些用法,以后学的更加深入了更加了解了再来逐一完善。


最后补充一下创建本地文件的位置,要是有初学者的话可以更加清楚:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值