基础工具包之JSON 工厂类

一、背景说明

该工具包集成了fastjson、net.sf.json、jackson,使用该工具做业务json操作后,可以实现无感json模式的切换,避免了如果因为某些原因要求不能使用net.sf.json,而很难做修改。工具类就可以直接通过配置实现无感切换。

二、引入

maven 引入

XML 复制代码
<dependency>
    <groupId>com.tfgee.mv</groupId>
    <artifactId>tbtools-common-box</artifactId>
    <version>0.0.2</version>
</dependency>

三、使用示例

1、配置

在启动类中声明使用的json模式,当然不声明将默认使用fastjson模式。这里有两种配置方式

a、配置type

使用内置的三种json模式

b、配置实现类

自己集成DefaultJson实现自己的json模式,然后使用JsonConfig.jsonImpl = new MineJson();配置生效。

java 复制代码
/**
		 * =====================
		 */
		//1、可以直接配置,进行json模式的无缝切换
		JsonConfig.jsonUtilsCommpoentType = JsonUtilsCommpoentType.NetsfJson;
		//JsonConfig.jsonUtilsCommpoentType = JsonUtilsCommpoentType.FastJson;
		
		/*
		JsonConfig.jsonUtilsCommpoentType = JsonUtilsCommpoentType.Jackson;
		//对于jackson,可以预先设置其全局配置信息
		ObjectMapper objectMapper = JsonFactory.build().getJacksonObjectMapper();
		*/
		
		//2、如果觉得内置的fastjson,net.sf.json.jackson都不好用,也可以直接实现接口然后使用自己集成的
		/**
		 * 自己集成,使用自己的模式,那么所有使用到JsonFactory的都会自动切换
		 */
		//JsonConfig.jsonImpl = new MineJson();
		//JsonFactory.genJsonObject();
		/*
		 * =====================
		 */

2、调用示例

a、jsonObject使用示例

java 复制代码
/**
		 * JSONObject 测试
		 */
		
		//测试实例
		TestBean testBean = new TestBean();
		testBean.setName("name");
		
		String jsonString = "{\"1\":\"2\",\"3\":{\"4\":\"5\",\"6\":[7,8,9]}}";

		//JsonImpl jsonImpl = JsonFactory.build(JsonUtilsCommpoentType.NetsfJson);
		//string 转json对象
		JsonObjectImpl jsonObject = JsonFactory.genJsonObject().parse(jsonString);
		
		//获取对象
		System.out.println("get:"+jsonObject.get("3"));
		//获取字符串数据
		System.out.println("getString:"+jsonObject.getString("1"));
		//放入
		jsonObject.put("put", "put");
		//移除
		jsonObject.remove("1");
		//放入
		jsonObject.element("add", "add");
		System.out.println("最后操作结果:"+jsonObject);
		System.out.println(jsonObject.getJsonObject("3"));
		System.out.println(jsonObject.getJsonObject("3").getJsonArray("6"));

		//对象转json
		System.out.println("parseObject"+JsonFactory.genJsonObject().parseObject(testBean));
		//string或json转对象
		TestBean testBean2 = JsonFactory.genJsonObject().parse("{\"name\":\"name2\"}").toJavaObject(TestBean.class);
		System.out.println("testBean2:"+JsonFactory.genJsonObject().parseObject(testBean2));
		//对象转string
		System.out.println("toJsonString"+JsonFactory.genJsonObject().toJsonString(testBean2));

b、jsonArray使用示例

java 复制代码
//测试实例
		TestBean testBean = new TestBean();
		testBean.setName("name");
/**
		 * JSONArray 测试
		 */
		System.out.println("=========jsonarray====================");
		//json数组添加元素
		JsonArrayImpl jsonArray = JsonFactory.genJsonArray();
		jsonArray.element(testBean);
		
		System.out.println(jsonArray);
		//json数组转list
		List<TestBean> list = jsonArray.toList(TestBean.class);
		//list转json数组
		System.out.println(JsonFactory.genJsonArray().parseArray(list));
		//添加元素
		jsonArray.element(Lists.newArrayList("2","3"));
		//字符串转json数组
		System.out.println(JsonFactory.genJsonArray().parseArray("[1,2,3,4]"));
		//获取
		System.out.println(jsonArray.getJsonObject(0));
		System.out.println(jsonArray.getJsonArray(1));
相关推荐
折哥的程序人生 · 物流技术专研3 小时前
第4篇:Lambda 简化策略模式(Java 8+)
java·设计模式·策略模式·函数式编程·lambda·代码简化·扩充系列
researcher-Jiang4 小时前
高性能计算之OpenMP——超算习堂学习1
android·java·学习
西门吹-禅6 小时前
java springboot N+1问题
java·开发语言·spring boot
DLYSB_6 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
weixin_BYSJ19876 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
AI小码6 小时前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
Hui Baby7 小时前
Spring Security
java·后端·spring
IT笔记7 小时前
【Rust】Rust Match 模式匹配详解
java·开发语言·rust
我才是银古8 小时前
构建 Java GIS 工具库:从碎片化 API 到统一抽象的设计实践
java·gis·geotools·gdal·esri
TPBoreas8 小时前
配置信息防泄露方案:.env 环境隔离详解(dotenv-java)
java·开发语言