Java 实体转Json Json转实体 String转Json Sting转JSONObject Sting转JSONArray

本文详细介绍了Java中使用json-lib和Fastjson库进行String到Json的转换,包括实体与Json对象之间的互转,以及JsonArray的操作。同时,文章还讨论了解决Json字符串中反斜杠导致的解析问题,并提供了Java将JSON转换为Map的示例。此外,文中还涉及到了Redis缓存中的Json操作,如Json转实体和List。
该文章已生成可运行项目,

常用:String转Json 字符串转Json

// String转Json
JSONObject json = JSONObject.parseObject(token);
token = json.get("token").toString();

一、实体转Json Json转实体 String转Json String转JSONArray

一、JDKjson(json-lib-2.4-jdk15.jar)
// String转Json
JSONObject json = JSONObject.fromObject(responseMsg); // JSONObject解析
// String转JSONArray
JSONArray listJson = JSONArray.fromObject(responseMsg); // JSONArray解析 "[{},{},{}]"
// 实体转Json
JSONObject json = JSONObject.fromObject(std);
// List转Json
JSONArray jsonArray = JSONArray.fromObject(list);
// Json转实体
StdCost stdTemp = (StdCost)JSONObject.toBean(json, StdCost.class);
// Json转List
List<StdCost> listTemp = JSONArray.toList(jsonArray, StdCost.class);

二、阿里云fastjson(fastjson-1.2.10.jar)
// String转Json
JSONObject json = JSONObject.parseObject(responseMsg); // JSONObject解析
// String转JSONArray
JSONArray listJson = JSONArray.parseArray(responseMsg); // JSONArray解析 "[{},{},{}]"
// 实体转Json
JSONObject json = (JSONObject)JSONObject.toJSON(std);
// List转Json
JSONArray jsonArray = (JSONArray)JSONArray.toJSON(list);
// List转Json【日期格式化-解决日期序列化后变成时间戳的问题】
String jsonStr = JSON.toJSONStringWithDateFormat(employees, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteMapNullValue);
// Json转实体
StdCost stdJson = JSONObject.parseObject(json.toString(), StdCost.class);
// Json转List
List<StdCost> listTemp = JSONArray.parseArray(jsonArray.toString(), StdCost.class);

三、JDK自带默认序列化工具jackson(jackson-databind-2.11.4.jar)
// List转Json【系统默认的序列化工具jackson】
ObjectMapper mapper = new ObjectMapper(); // 创建ObjectMapper实例
// mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // 禁用默认的时间戳格式
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); // 设置自定义日期格式
String jsonStr = null;
try {
    jsonStr = mapper.writeValueAsString(employees);
} catch (Exception e) {
    e.printStackTrace();
}

完整示例:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
if(list != null && list.size() > 0){
	/*for(int i=0; i<list.size(); i++){
		StdCost std = list.get(i);
		System.out.println("--- " + i + "/" + list.size() +
				" " + std.getStudentName() +
				" " + std.getStudentIdCard() +
				" " + std.getFeitype() +
				" " + std.getFei() +
				" " + df.format(std.getCreatedDate())
				);
		
		JSONObject json = JSONObject.fromObject(std);
		listJson.add(json);
		StdCost stdTemp = (StdCost)JSONObject.toBean(json, StdCost.class);
		System.out.println(stdTemp.getStudentName() +
				" " + stdTemp.getStudentIdCard() +
				" " + stdTemp.getFeitype() +
				" " + stdTemp.getFei() +
				" " + df.format(stdTemp.getCreatedDate())
				);*/
		
		/*JSONObject json = (JSONObject)JSONObject.toJSON(std);
		listJson.add(json);
		StdCost stdTemp = JSONObject.parseObject(json.toString(), StdCost.class);
		System.out.println(stdTemp.getStudentName() +
				" " + stdTemp.getStudentIdCard() +
				" " + stdTemp.getFeitype() +
				" " + stdTemp.getFei() +
				" " + df.format(stdTemp.getCreatedDate())
				);*/
	//}
	
	//jsonArray = JSONArray.fromObject(list);
	//List<StdCost> listTemp = JSONArray.toList(jsonArray, StdCost.class);
	
	jsonArray = (JSONArray)JSONArray.toJSON(list);
	List<StdCost> listTemp = JSONArray.parseArray(jsonArray.toString(), StdCost.class);
	
	if(listTemp != null && listTemp.size() > 0){
		StdCost stdTemp = null;
		for(int i=0; i<listTemp.size(); i++){
			stdTemp = listTemp.get(i);
			System.out.println(stdTemp.getStudentName() +
					" " + stdTemp.getStudentIdCard() +
					" " + stdTemp.getFeitype() +
					" " + stdTemp.getFei() +
					" " + df.format(stdTemp.getCreatedDate())
					);
		}
	}
}

二、String转Json(Sting转JSONObject) 及 String转JsonArray(Sting转JSONArray)

1)普通net.sf.json.JSONObject

JSONObject json= JSONObject.fromObject(responseMsg);//JSONObject解析
JSONArray listJson = JSONArray.fromObject(responseMsg);//JSONArray解析 "[{},{},{}]"

完整示例:

//6.处理返回的内容
//JSONObject json= JSONObject.fromObject(responseMsg);//JSONObject解析
JSONArray listJson = JSONArray.fromObject(responseMsg);//JSONArray解析 "[{},{},{}]"
for(int i=0; i<listJson.size(); i++){
    JSONObject jsonObject = listJson.getJSONObject(i);
    String canteenName = jsonObject.getString("canteenName");
    String employeeName = jsonObject.getString("employeeName");
    System.out.println("canteenName:" + canteenName);
    System.out.println("employeeName:" + employeeName);
}

2)阿里云fastjson

//String转Json
JSONObject json = JSONObject.parseObject(token);//JSONObject解析
//String转JSONArray
JSONArray listJson = JSONArray.parseArray(value);//JSONArray解析 "[{},{},{}]"

  

三、json中带反斜杠\无法解析的问题

普通net.sf.json.JSONObject

import net.sf.json.JSONObject;

String jsonStr = "{\"name\":\"zhangsan\",\"password\":\"123123\"}";
JSONObject json_test = JSONObject.fromObject(jsonStr);

解决json中带反斜杠\无法解析的问题(手工处理) 

//解决json中带反斜杠\无法解析的问题(手工处理)
jsonStr = jsonStr.substring(1, jsonStr.length() - 1);
jsonStr = jsonStr.replace("\\", "");
阿里云fastjson
String xmlStr = {"xmlStr":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><APPROVEDATAINFO><SBLSH_SHORT>405051610052012121110300001</SBLSH_SHORT><SXBM>52012120140505161008008244</SXBM><XZQHDM>520100</XZQHDM><EXPRESSTYPE>3</EXPRESSTYPE></APPROVEDATAINFO>"};
JSONObject json = JSONObject.parseObject(xmlStr);
String xml = json.get("xmlStr").toString();
System.out.println(xml);

解决json中带反斜杠\无法解析的问题(阿里云fastjson) 

//解决json中带反斜杠\无法解析的问题(阿里云fastjson)
jsonStr = JSON.parse(jsonStr).toString();

 参考:问题关于json 字符串中带有反斜杠的问题_ベ远行ミ的博客-CSDN博客_json里面有反斜杠

Java JSON转Map 

//JSON转Map(JSONObject是Map接口的一个实现类)
Map json = (Map)JSONObject.parse(str);

 参考:Java JSON转换为map_Eric-x的博客-CSDN博客_java json转map

最新示例 (Redis缓存)

Json转实体

// 保存第一页的电子档案信息(Redis缓存中)
// 获取缓存的第一页数据
String key1 = RedisConstant.PREFIX_DOCUMENT + CurrentUserUtil.getCurrentUserInfo().getUserId() + ":" + dto.getSceneId() + ":" + 1;
String jsonStr = redisTemplate.opsForValue().get(key1);
if(!StringUtils.isEmpty(jsonStr)){
    // Json转实体
    BusinessDto businessDto = JSONObject.parseObject(jsonStr, BusinessDto.class);
    if(!CollectionUtils.isEmpty(businessDto.getDocuments())){
    }
}

 Json转List

// 优化,增加Redis缓存
String key = RedisConstant.PREFIX_ORG_LISTTREE +
        (id == null ? "default-" : id + "-") +
        (type == null ? "default-" : type + "-") +
        (StringUtils.isEmpty(name) ? "default" : name);
String jsonStr = redisTemplate.opsForValue().get(key);
if(!StringUtils.isEmpty(jsonStr)){
    // Json转List
    List<SysOrganizationVo> listReturn = JSONArray.parseArray(jsonStr, SysOrganizationVo.class);
}

实体转Json 

// 实体转Json
JSONObject json = (JSONObject) JSONObject.toJSON(businessDto);
// 保存到Redis
redisTemplate.opsForValue().set(RedisConstant.PREFIX_DOCUMENT + CurrentUserUtil.getCurrentUserInfo().getUserId() + ":" + businessDto.getSceneId() + ":" + businessDto.getWhichPage(), json.toString());

List转Json

// List转Json
JSONArray jsonArray = (JSONArray)JSONArray.toJSON(list);
// 保存到Redis
redisTemplate.opsForValue().set(key, jsonArray.toString());

【js】Json转List,List转Json

// js对象转json字符串
var user1 = { 
    'height': 170,
    'name':'张三'
}
var user1Str = JSON.stringify(user1)
console.info(user1Str)
typeof user1Str
// json字符串转js对象
var newUser1 = JSON.parse(user1Str)
console.info(newUser1)
typeof newUser1

参考:https://cloud.tencent.com.cn/developer/article/2131404?from=15425&frompage=seopage

【js】 含[]的字符串转数组

let countArray = JSON.parse(decryptedData.count)
let jsonString = '[1, 2, 3]';
let array = JSON.parse(jsonString);
console.log(array); // 输出: [1, 2, 3]


 

本文章已经生成可运行项目
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值