数据库压力测试--Redis数据库存取并解析Json数据
2016-11-05 14:52
399 查看
一、实现原理
二、向Redis数据库写入并转化为Json数据
三、从Redis数据库读取并解析Json数据
3.1基本步骤说明
3.1.1工作流程图上图
Json数据解析工作流程文字解读:获取Json对象(Json Object),解析为Java对象(Java Object)(比如存入Map,List,在这里我们是将Json对象解析为一个Class类),然后读取该Java对象(Java Object)即可.
3.1.2导入jar包
需要导入几个符合版本要求的jar包.
上图
分为以下几类:
a.Redis数据库的驱动Jedis
jedis-2.5.2.jar
b.解析JSon数据需要的jar包
json-lib-2.4-jdk15.jar、jackson-core-asl-1.9.13.jar、jackson-mapper-asl-1.9.13.jar
3.1.3编写实例类
上图
a.编写Redis读取类
编写ClientRedis类,连接Redis数据库,读取数据库里的Json对象(Json Object),调用JsonAnalysis类的readValue()方法,将Json对象(Json Object)解析为Java对象(Java Object)并转换为String类型的数据输出.
代码实现
package cn.edu.sdut.json.analysis; /*@Author GaoZiqiang * date:2016-11-03 * 作用:实现从Redis数据库读取Json数据并解析输出 * */ import redis.clients.jedis.Jedis; /*从数据库读取Json数据并解析 * 涉及到Redis数据库连接,数据读取,Json数据解析 * */ public class ClientRedis { private static Jedis client; public static void main(String[] args) { new ClientRedis().setRelation(); new ClientRedis().jsonAnalysis(); } // 与Redis数据库建立连接 public void setRelation() { try { String host = "127.0.0.1"; int port = 6379; if (client == null) { client = new Jedis(host, port); } } catch (Exception e) { e.printStackTrace(); } } // 数据读取与解析操作 public void jsonAnalysis() { try { // 输出json数据jsonData String jsonData = client.get("gao"); System.out.println("读取并输出Redis内Json数据:\n" + jsonData); // 调用readValue()方法,解析该json数据为String数据stringData,并输出 JsonConversion stringData = JsonAnalysis.readValue(jsonData, JsonConversion.class); System.out.println("解析并输出Json数据:\n" + stringData); } catch (Exception e) { e.printStackTrace(); } } }
b.编写解析类
编写JsonAnalysis类调用jackson.map.ObjectMapper的readValue()方法,结合泛型方法,把Json对象(Json Object)转换为相应的Java对象(Java Object),在这里我们选择将Json对象(Json Object)解析转换为特定类型的Json对象(Json Object)即Student[].class类型.
代码实现
package cn.edu.sdut.json.analysis; /*@Author GaoZiqiang *date:2016-11-03 * 作用:实现不同数据类型与json数据的相互转化 * */ import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.PropertyNamingStrategy; public class JsonAnalysis { static ObjectMapper objectMapper; /** * 使用泛型方法,把json字符串转换为相应的JavaBean对象。 * (1)转换为普通JavaBean:readValue(json,Student.class) * (2)转换为List:readValue(json,List * .class).但是如果我们想把json转换为特定类型的List,比如List<Student>,就不能直接进行转换了。 * 因为readValue(json * ,List.class)返回的其实是List<Map>类型,你不能指定readValue()的第二个参数是List< * Student>.class,所以不能直接转换。 * 我们可以把readValue()的第二个参数传递为Student[].class.然后使用Arrays * .asList();方法把得到的数组转换为特定类型的List。 * (3)转换为Map:readValue(json,Map.class) * 我们使用泛型,得到的也是泛型 * * @param content * 要转换的JavaBean类型 * @param valueType * 原始json字符串数据 * @return JavaBean对象 */ // 解析Json数据并转化为JavaBean对象 public static <T> T readValue(String content, Class<T> valueType) { if (objectMapper == null) { objectMapper = new ObjectMapper(); } try { return objectMapper.readValue(content, valueType); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 把JavaBean转换为json字符串 (1)普通对象转换:toJson(Student) (2)List转换:toJson(List) * (3)Map转换:toJson(Map) 我们发现不管什么类型,都可以直接传入这个方法 * * JavaBean对象 * * @param object * @return json字符串 */ // 转化为json数据 public static String toJSon(Object object) { if (objectMapper == null) { objectMapper = new ObjectMapper(); } try { objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES); return objectMapper.writeValueAsString(object); } catch (Exception e) { e.printStackTrace(); } return null; } } c.编写转化类 编写JsonConversion类,通过toString()方法实现将Json对象(Json Object)即Student[].class内的符合Java常规的String类型数据输出. 代码实现 package cn.edu.sdut.json.analysis; /*@Author GaoZiqiang * date:2016-11-03 * 作用:实现接受Json解析后的数据 * */ public class JsonConversion { // 设置属性 public String name; public int age; // 构造器 public JsonConversion() { } // getter和setter方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } /* * 具体实现方法 转化为String字符串 */ @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } }
3.2相关代码程序说明
由ClientRedis()类从Redis数据库读取Json对象(Json Object),再由JsonAnalysis()类实现将Json对象解析为Java对象(Java Object),最后由JsonConversion()类将Java对象(Java Object)转换为符合Java常规的String类型的数据.四、程序运行流程及结果
编译运行即可程序运行结构如下:
上图
读取并输出Redis内Json数据: {"name":"gaoziqiang","age":123} 解析并输出Json数据: Person [name=gaoziqiang, age=123]
相关文章推荐
- Redis数据库存取并解析Json数据
- JMeter 压力测试使用函数和 CSV 文件参数化 json 数据
- 使用web压力测试工具 siege 和 ab 发送带json数据的post请求
- 接口测试:解析JSON数据
- JSON解析数据 vs 从bomb服务器数据库查询数据
- Unity3d-Json数据解析在登录注册本地存取的应用
- Java解析txt文件中json数据到List<entity>,并存入数据库
- 【Servlet】在Servlet3.0中利用json+ajax把数据库查询出来的数据推向前台显示,无额外的json解析包
- 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
- JMeter 压力测试使用函数和 CSV 文件参数化 json 数据
- JSON PHP中返回JSON数据(多个JSON通过一个大的数组组合成一个JSON字符串),在客户端解析JSON数据减轻服务端压力
- JMeter 压力测试使用函数和 CSV 文件参数化 json 数据
- 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
- 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
- (有码)数据库常用方法和json数据解析
- 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
- 通过servlet从气象局接口获取到天气预报的json数据,并解析得到的json数据存入数据库(案例)
- 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
- Android连接服务器数据库查询+Gson解析(List和Map)格式json数据(二)
- 通过JAVA从高德地图URL连接获取json数据 解析并存入数据库的程序举例