[学习小笔记] Gson的基本使用
2017-02-19 18:07
369 查看
今天在来记录一下以前做过的关于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来完成的。当然了,我学习的还只是最基础的一些用法,以后学的更加深入了更加了解了再来逐一完善。
最后补充一下创建本地文件的位置,要是有初学者的话可以更加清楚:
相关文章推荐
- [Linux学习笔记]第1天:操作系统的发展史,linux诞生,Linux发行商,shell,terminal,shell使用技巧,文件目录,基本操作
- 【VC++ 中使用ADO操作数据库学习笔记】_ConnectionPtr指针的基本用法
- MongoDB学习笔记之基本使用
- ibatIS学习笔记---Ibatis的基本使用方法
- NetworkX学习笔记-2-基本使用方法举例
- WPF and Silverlight 学习笔记(二十八):基本图形的使用(3)图形的操作
- WPF and Silverlight 学习笔记(二十八):基本图形的使用(3)图形的操作
- Java 学习笔记30:gson的深入使用
- 黑马程序员之存储过程学习笔记:存储过程的基本使用
- Java学习笔记36:Java log4j 基本配置和使用
- GIT学习笔记1--基本使用
- WPF and Silverlight 学习笔记(二十六):基本图形使用(1)
- cocos2d-x学习笔记17:记录存储2:SQLite基本使用 推荐
- [iTextSharp学习笔记]使用iText的基本构造块
- .Net学习笔记 - 客户端访问服务器端的基本使用
- accp6.0 《使用javascript增强交互效果》学习笔记ch6 表单基本验证技术
- [iTextSharp学习笔记]使用iText的基本构造块
- 开始hadoop前的准备:ubuntu学习笔记-基本环境的搭建(ssh的安装,SecureCRT连接,vim的安装及使用、jdk的安装)
- NetworkX学习笔记-2-基本使用方法举例
- 第三章、一些基本数据结构使用和解析(iOS学习笔记,从零开始。)