Android学习(二):解析JSON,GSON,FASTJSON;JDBC编程
来源:互联网 发布:mac版ps保存快捷键 编辑:程序博客网 时间:2024/04/29 23:02
一、android使用JSON
JSON数据格式如下形式(以键值对的形式存在):
{ "students": [ {"name":"jack","age":10}, {"name":"Lucy","age":40} ]}·解析JSON格式如下例子代码:
·1.首先定义Person类,创建Person.java
package com.qianfeng.domain;public class Person { private int age; private String name; public Person() { // TODO Auto-generated constructor stub } public Person(int age, String name) { super(); this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person [age=" + age + ", name=" + name + "]"; }}·2.JsonList数据,创建JsonList.java
package com.qianfeng.service;import java.util.ArrayList;import java.util.List;import com.qianfeng.domain.Person;public class JsonList { public JsonList() {} public static List<Person> getList() { List<Person> list = new ArrayList<Person>(); list.add(new Person(1002,"李四2")); list.add(new Person(1003,"李四3")); list.add(new Person(1001,"李四1")); return list; } public static Person getPerson(){ return new Person(1002,"李四2"); }}·3.JSON解析程序,创建JsonTools.java
package com.qianfeng.service;import java.util.ArrayList;import java.util.List;import com.qianfeng.domain.Person;import net.sf.json.JSON;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import net.sf.json.JSONSerializer;public class JsonTools { public JsonTools() {} public static String getString(Person person) { JSON json = JSONSerializer.toJSON(JsonList.getPerson()); return json.toString(); } public static Person getPerson(String msgString) { Person person = new Person(); JSONArray array = new JSONArray(); array.add(msgString); JSONObject obj = array.getJSONObject(0); // System.out.println(obj.get("age")); // System.out.println(obj.get("name")); person.setAge(obj.getInt("age")); person.setName(obj.getString("name")); return person; } public static String getListString(List<Person> listPersons) { JSON json = JSONSerializer.toJSON(listPersons); return json.toString(); } /** * 将一个json格式的字符串转换成行对应的对象 * @param str * @return */ public static List<Person> getPersons(String str) { List<Person> list = new ArrayList<Person>(); JSONArray array = new JSONArray(); array.add(str); JSONArray array2 = array.getJSONArray(0); for (int i = 0; i <array2.size(); i++) { JSONObject jsonObject = array2.getJSONObject(i); Person person = new Person(); person.setAge(jsonObject.getInt("age")); person.setName(jsonObject.getString("name")); list.add(person); } return list; } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub // JSON json = JSONSerializer.toJSON(JsonList.getList()); // System.out.println(getString(new Person(23,"jack"))); // System.out.println(getPerson("{'age':1002,'name':'李四2'}").toString()); // System.out.println(getListString(JsonList.getList())); String msgString = "[{'age':1002,'name':'李四2'},{'age':1003,'name':'李四3'},{'age':1001,'name':'李四1'}]"; List<Person> lPersons = getPersons(msgString); for(Person p:lPersons){ System.out.println(p.toString()); } }}
·
·二、android使用GSON
·ØGson这个Java类库可以把Java对象转换成JSON,也可以把JSON字符串转换成一个相等的Java对象。
·ØGson支持任意复杂Java对象包括没有源代码的对象。
·解析GSON格式如下例子代码:
·1.首先定义Person类,如上述
·2.创建GsonTools.java
package com.android.mygson;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.android.domain.Person;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;public class GsonTools { public GsonTools() {} public static String createGsonString(Object object) { Gson gson = new Gson(); String gsonString = gson.toJson(object); return gsonString; } public static <T> T changeGsonToBean(String gsonString, Class<T> cls) { Gson gson = new Gson(); T t = gson.fromJson(gsonString, cls); return t; } public static <T> List<T> changeGsonToList(String gsonString, Class<T> cls) { Gson gson = new Gson(); List<T> list_person = gson.fromJson(gsonString, new TypeToken<List<T>>() { }.getType()); return list_person; } public static List<Map<String, Object>> changeGsonToListMaps(String gsonString) { List<Map<String, Object>> list = null; Gson gson = new Gson(); list = gson.fromJson(gsonString, new TypeToken<List<Map<String, Object>>>() { }.getType()); return list; } public static void main(String[] args) { // TODO Auto-generated method stub // Person person1 = new Person("张三1", 24, "北京1"); // Person person2 = new Person("张三2", 23, "北京2"); // List<Person> list = new ArrayList<Person>(); // list.add(person1); // list.add(person2); // // String gsonString = createGsonString(list); // System.out.println(gsonString); // Gson gson = new Gson(); // List<Person> list_person = changeGsonToList(gsonString,Person.class); // System.out.println(list_person.toString()); // Person pp = changeGsonToBean(gsonString,Person.class); // System.out.println(pp); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "jack"); map.put("age", 23); Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("name", "rose"); map2.put("age", 24); list.add(map); list.add(map2); String gsonString = createGsonString(list); System.out.println(gsonString); List<Map<String, Object>> list2 = changeGsonToListMaps(gsonString); System.out.println(list2.toString()); }}
·
·三、android使用阿里巴巴fastjson技术
·ØFastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
·Ø速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson。
·Ø功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省。
·Ø无依赖,能够直接运行在Java SE 5.0以上版本
·Ø支持Android。
·Ø开源 (Apache 2.0)
·解析GSON格式如下例子代码:
·1.首先定义Person类,如上述
·2.创建FastJsonTools.java
package com.android.myfastjson;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.TypeReference;import com.alibaba.fastjson.asm.Type;import com.alibaba.fastjson.util.TypeUtils;public class FastJsonTools { public FastJsonTools() {} public static String createJsonString(Object object) { String jsonString = JSON.toJSONString(object); return jsonString; } public static <T> T createJsonBean(String jsonString, Class<T> cls) { T t = JSON.parseObject(jsonString, cls); return t; } public static <T> List<T> createJsonToListBean(String jsonString, Class<T> cls) { List<T> list = null; list = JSON.parseArray(jsonString, cls); return list; } public static List<Map<String, Object>> createJsonToListMap( String jsonString) { List<Map<String, Object>> list2 = JSON.parseObject(jsonString, new TypeReference<List<Map<String, Object>>>() { }); return list2; } public static void main(String[] args) { // TODO Auto-generated method stub // Person person1 = new Person("张三1", 24, "北京1"); // Person person2 = new Person("张三2", 23, "北京2"); // List<Person> list = new ArrayList<Person>(); // list.add(person1); // list.add(person2); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "jack"); map.put("age", 23); Map<String, Object> map2 = new HashMap<String, Object>(); map2.put("name", "rose"); map2.put("age", 24); list.add(map); list.add(map2); String jsonString = JSON.toJSONString(list); System.out.println(jsonString); // JSON.parseArray(arg0, arg1) List<Map<String, Object>> list2 = JSON.parseObject(jsonString, new TypeReference<List<Map<String, Object>>>() { }); // List<Person> lists = JSON.parseArray(arg0, arg1); System.out.println(list2.toString()); }}
·
·四、JDBC框架介绍
·JDBC程序访问数据库的步骤
·Ø步骤一:加载JDBC驱动程序
·Ø步骤二:提供连接参数
·Ø步骤三:建立一个数据库的连接
·Ø步骤四:创建一个statement
·Ø步骤五:执行SQL语句
·Ø步骤六:处理结果
·Ø步骤七:关闭JDBC对象
·
·JDBC代码范例
·1.定义基类:UserInfo.java
package com.jdbc.dbutils.domain;import java.io.Serializable;public class UserInfo implements Serializable { private static final long serialVersionUID = 1L; private int id; private String username; private String pswd; @Override public String toString() { return "UserInfo [id=" + id + ", username=" + username + ", pswd=" + pswd + "]"; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPswd() { return pswd; } public void setPswd(String pswd) { this.pswd = pswd; } public static long getSerialversionuid() { return serialVersionUID; } public UserInfo() { // TODO Auto-generated constructor stub }}
·2.建立JdbcUtils.java类
package com.jdbc.dbutils;import java.lang.reflect.Field;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.jdbc.dbutils.domain.UserInfo;public class JdbcUtils { // 表示定义数据库的用户名 private final String USERNAME = "root"; // 定义数据库的密码 private final String PASSWORD = "admin"; // 定义数据库的驱动信息 private final String DRIVER = "com.mysql.jdbc.Driver"; // 定义访问数据库的地址 private final String URL = "jdbc:mysql://localhost:3306/mydb"; // 定义数据库的链接 private Connection connection; // 定义sql语句的执行对象 private PreparedStatement pstmt; // 定义查询返回的结果集合 private ResultSet resultSet; public JdbcUtils() { try { Class.forName(DRIVER); System.out.println("注册驱动成功!!"); } catch (Exception e) { // TODO: handle exception } } // 定义获得数据库的链接 public Connection getConnection() { try { connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); } catch (Exception e) { // TODO: handle exception } return connection; } /** * 完成对数据库的表的添加删除和修改的操作 * * @param sql * @param params * @return * @throws SQLException */ public boolean updateByPreparedStatement(String sql, List<Object> params) throws SQLException { boolean flag = false; int result = -1;// 表示当用户执行添加删除和修改的时候所影响数据库的行数 pstmt = connection.prepareStatement(sql); int index = 1; if (params != null && !params.isEmpty()) { for (int i = 0; i < params.size(); i++) { pstmt.setObject(index++, params.get(i)); } } result = pstmt.executeUpdate(); flag = result > 0 ? true : false; return flag; } /** * 查询返回单条记录 * * @param sql * @param params * @return * @throws SQLException */ public Map<String, Object> findSimpleResult(String sql, List<Object> params) throws SQLException { Map<String, Object> map = new HashMap<String, Object>(); int index = 1; pstmt = connection.prepareStatement(sql); if (params != null && !params.isEmpty()) { for (int i = 0; i < params.size(); i++) { pstmt.setObject(index++, params.get(i)); } } resultSet = pstmt.executeQuery();// 返回查询结果 ResultSetMetaData metaData = resultSet.getMetaData(); int col_len = metaData.getColumnCount();// 获得列的名称 while (resultSet.next()) { for (int i = 0; i < col_len; i++) { String cols_name = metaData.getColumnName(i + 1); Object cols_value = resultSet.getObject(cols_name); if (cols_value == null) { cols_value = ""; } map.put(cols_name, cols_value); } } return map; } /** * 查询返回多行记录 * * @param sql * @param params * @return * @throws SQLException */ public List<Map<String, Object>> findMoreResult(String sql, List<Object> params) throws SQLException { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); int index = 1; pstmt = connection.prepareStatement(sql); if (params != null && !params.isEmpty()) { for (int i = 0; i < params.size(); i++) { pstmt.setObject(index++, params.get(i)); } } resultSet = pstmt.executeQuery(); ResultSetMetaData metaData = resultSet.getMetaData(); int cols_len = metaData.getColumnCount(); while (resultSet.next()) { Map<String, Object> map = new HashMap<String, Object>(); for (int i = 0; i < cols_len; i++) { String cols_name = metaData.getColumnName(i + 1); Object cols_value = resultSet.getObject(cols_name); if (cols_value == null) { cols_value = ""; } map.put(cols_name, cols_value); } list.add(map); } return list; } // jdbc的封装可以用反射机制来封装: public <T> T findSimpleRefResult(String sql, List<Object> params, Class<T> cls) throws Exception { T resultObject = null; int index = 1; pstmt = connection.prepareStatement(sql); if (params != null && !params.isEmpty()) { for (int i = 0; i < params.size(); i++) { pstmt.setObject(index++, params.get(i)); } } resultSet = pstmt.executeQuery(); ResultSetMetaData metaData = resultSet.getMetaData(); int cols_len = metaData.getColumnCount(); while (resultSet.next()) { // 通过反射机制创建实例 resultObject = cls.newInstance(); for (int i = 0; i < cols_len; i++) { String cols_name = metaData.getColumnName(i + 1); Object cols_value = resultSet.getObject(cols_name); if (cols_value == null) { cols_value = ""; } Field field = cls.getDeclaredField(cols_name); field.setAccessible(true);// 打开javabean的访问private权限 field.set(resultObject, cols_value); } } return resultObject; } /** * 通过反射机制访问数据库 * * @param <T> * @param sql * @param params * @param cls * @return * @throws Exception */ public <T> List<T> findMoreRefResult(String sql, List<Object> params, Class<T> cls) throws Exception { List<T> list = new ArrayList<T>(); int index = 1; pstmt = connection.prepareStatement(sql); if (params != null && !params.isEmpty()) { for (int i = 0; i < params.size(); i++) { pstmt.setObject(index++, params.get(i)); } } resultSet = pstmt.executeQuery(); ResultSetMetaData metaData = resultSet.getMetaData(); int cols_len = metaData.getColumnCount(); while (resultSet.next()) { T resultObject = cls.newInstance(); for (int i = 0; i < cols_len; i++) { String cols_name = metaData.getColumnName(i + 1); Object cols_value = resultSet.getObject(cols_name); if (cols_value == null) { cols_value = ""; } Field field = cls.getDeclaredField(cols_name); field.setAccessible(true); field.set(resultObject, cols_value); } list.add(resultObject); } return list; } public void releaseConn() { if (resultSet != null) { try { resultSet.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (connection != null) { try { connection.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub JdbcUtils jdbcUtils = new JdbcUtils(); jdbcUtils.getConnection(); // String sql = "insert into userinfo(username,pswd) values(?,?)"; // List<Object> params = new ArrayList<Object>(); // params.add("rose"); // params.add("123"); // try { // boolean flag = jdbcUtils.updateByPreparedStatement(sql, params); // System.out.println(flag); // } catch (SQLException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } String sql = "select * from userinfo ";// List<Object> params = new ArrayList<Object>();// params.add(1); try { List<UserInfo> list = jdbcUtils.findMoreRefResult(sql, null, UserInfo.class); System.out.println(list); } catch (Exception e) { // TODO: handle exception } finally { jdbcUtils.releaseConn(); } }}
·
·
·
·
·
·
·Over
0 0
- Android学习(二):解析JSON,GSON,FASTJSON;JDBC编程
- JSON解析-GSON-FastJSON.android
- Android-解析Json(Gson-FastJson)
- JSON解析学习笔记(json、gson、fastjson)
- android json解析(fastjson,Gson等)
- Android json解析(FastJson Gson 对比)
- Android中Json数据解析(二)--使用Gson、Jackson和FastJson解析Json数据
- Android中Json数据解析(二)--使用Gson、Jackson和FastJson解析Json数据
- Android JSON(Fastjson,Gson)
- 【JavaEE学习笔记】JSON解析_原生JSON,GSON,FastJSON
- Android中的JSON解析方式:json; Gson ; Fastjson
- Android中的JSON解析方式:json; Gson ; Fastjson
- Android中的JSON解析方式:json; Gson ; Fastjson
- android 使用FastJson、Gson、JSON 解析Json---练习
- Json,Gson,FastJson解析笔记
- 简单json,FastJson,Gson解析
- Json,Gson,FastJson解析笔记
- Json解析速度比较-Android API、Gson、Fastjson
- 正态分布模拟试验
- java web开发时表单提交引起的一些中文乱码问题
- 畅通工程续
- SDUT 鞍点计算
- 从软件公司的企业文化浅谈什么是管理能力
- Android学习(二):解析JSON,GSON,FASTJSON;JDBC编程
- 最短路—— 畅通工程续
- 线程 NSThread 多线程 获取当前线程
- VC6.0里面怎么设置编译成Release或Debug版本?
- ubuntu 12.04下gedit查看txt中文乱码解决办法
- 最短路
- 最短路
- SDUT C语言实验——余弦
- 1173 二分查找