基础工具包之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));
相关推荐
追逐梦想的张小年2 小时前
JUC编程04
java·idea
好家伙VCC2 小时前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
南极星10052 小时前
蓝桥杯JAVA--启蒙之路(十)class版本 模块
java·开发语言
消失的旧时光-19433 小时前
第十三课:权限系统如何设计?——RBAC 与 Spring Security 架构
java·架构·spring security·rbac
不能隔夜的咖喱3 小时前
牛客网刷题(2)
java·开发语言·算法
serve the people3 小时前
python环境搭建 (十二) pydantic和pydantic-settings类型验证与解析
java·网络·python
lekami_兰3 小时前
Java 并发工具类详解:4 大核心工具 + 实战场景,告别 synchronized
java·并发工具
有位神秘人3 小时前
Android中Notification的使用详解
android·java·javascript
tb_first4 小时前
LangChain4j简单入门
java·spring boot·langchain4j