JSON.parse(tempWhiteBoardTextBook); // 将接收到的服务器字符串转为JavaScript对象;
JSON.stringify(tempWhiteBoardTextBook); // 将JavaScript对象或值转换为JSON字符串,一般是发送json数据到服务器;
1、使用此net.sf.json.JSONObject包
将map/list集合 或者 json串转为 JSONObject 对象,然后互相转的时候调用强转或者toString方法即可;
// map集合转json
net.sf.json.JSONObject mapJson = net.sf.json.JSONObject.fromObject(map);
System.out.println("mapJson == " + mapJson.toString());
mapJson == {"sex":"man","name":"xiaomo","age":"30"}
// json转map集合
String jsonString = "{'name':'xiaomo','age':'30','sex':'man'}";
net.sf.json.JSONObject mapJson = net.sf.json.JSONObject.fromObject(jsonString);
Map<String,Object> map= (Map<String,Object>)mapJson;
System.out.println("map == " + map);
map == {"name":"xiaomo","age":"30","sex":"man"}
2、使用此com.alibaba.fastjson.JSON包
将map/list集合 转为 json, 使用JSON.toJSONString(Object)方法返回的就是json串;
// map集合转json
String mapJson = com.alibaba.fastjson.JSON.toJSONString(map);
System.out.println("mapJson == " + mapJson);
mapJson == {"sex":"man","name":"xiaomo","age":"30"}
// json转map集合
Object jsonMap = com.alibaba.fastjson.JSON.parse(jsonString);
Map<String,Object> model= (Map<String,Object>)jsonMap;
System.out.println("model == " + model);
model == {"name":"xiaomo","age":"30","sex":"man"}
// list集合转json
String weekListJson = com.alibaba.fastjson.JSON.toJSONString(weekList);
System.out.println("weekListJson == " + weekListJson);
weekListJson == ["monday","tuestday","wednesday"]
// json转list集合
String jsonString = "['monday','tuestday','wednesday']";
Object parse = com.alibaba.fastjson.JSON.parse(jsonString);
List<String> jsonList = (List<String>)parse;
System.out.println("jsonList == " + jsonList);
jsonList == ["monday","tuestday","wednesday"]
3、使用此com.fasterxml.jackson.databind.ObjectMapper包
// map集合转json
com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
String mapJson = mapper.writeValueAsString(map);
System.out.println("mapJson == " + mapJson);
mapJson == {"sex":"man","name":"xiaomo","age":"30"}
// list集合转json
com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
String weekListJson = mapper.writeValueAsString(weekList);
System.out.println("weekListJson == " + weekListJson);
weekListJson == ["monday","tuestday","wednesday"]
// 将list集合或者map集合响应到前端
response.setContentType("text/html;charset=UTF-8");
mapper.writeValue(response.getWriter(), map); // 响应数据,为json,通过流传输数据
response.setContentType("text/html;charset=UTF-8");
mapper.writeValue(response.getWriter(), list);// 响应数据,为json,通过流传输数据
// 前端接收mapper传来的数据的处理方式
var results = eval('(' + data + ')');
$.each(results, function(index, result) {
console.log(result.postUrl);
console.log(result.image);
})
4、使用此net.sf.json.JSONArray包
// list集合转json
net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(weekList);
System.out.println("weekListJson == " + jsonArray.toString());
weekListJson == ["monday","tuestday","wednesday"]
// json转list集合
String jsonString = "['monday','tuestday','wednesday']";
net.sf.json.JSONArray fromObject = net.sf.json.JSONArray.fromObject(jsonString);
List<String> jsonList = (List<String>)fromObject;
System.out.println("jsonList == " + jsonList);
5、使用此com.alibaba.fastjson.JSONObject包
// json转对象List集合
List<Transaction> transactionsList = com.alibaba.fastjson.JSONObject.parseArray(result, Transaction.class);
// json转Object对象
// 方法一
com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(result);
PayPalResult payPalResult = (PayPalResult)JSONObject.toJavaObject(jsonObject, PayPalResult.class);
// 方法二
PayPalSubscriptionResult payPalSubscriptionResult = JSONObject.parseObject(result, PayPalSubscriptionResult.class);
6、后台的数据如果是map集合 直接传前台会无法解析,我的做法是 先将map在后台解析为json 再传到前端
// 后台传值数据
model.put("templateMap", JSON.toJSONString(templateMap));
// 前台接收数据
<input type='hidden' id="templateMap" value='<c:out value="${templateMap}" />'>
var templateMap = eval('(' + $("#templateMap").val() + ')');
for (var key in templateMap){
// 根据key值作处理
if(key == templateId){
for(var i=0; i < templateMap[key].length; i++){
//遍历,动态赋值
var param = templateMap[key][i];
}
}
}
7、jsp页面可以内嵌一个url来进行返回值判断
<jsp:include page="/myaccount/student/poster/getStudentPoster.do" flush="true" />
8、如何使用ajax请求提交json格式数据到后台处理
$.ajax({
type:"post",
url:"/admin/student/makeElectronicCertificate.do",
data:{
studentName:studentName,
studyPeriodEn:studyPeriodEn,
studyPeriodCn:studyPeriodCn,
studyCategory:studyCategory,
graduationTime:graduationTime
},
dataType:'json',// 声明接收后台传过来的数据格式为json 也有xml和text等 因为这里我做的是json传输
cache:false,
success:function(data){
data = JSON.parse(data); // 将后台传过来的json数据进行解析
alert("data == " + data);
alert("result == " + data.result + ",targetFilePath == " + data.targetFilePath);
},
error:function(message){
alert("调用ajax请求出错");
}
});
// 后台接收数据
Map<String,Object> resultMap = new HashMap<String,Object>();
String result = "success";
try {
PDFUtil.fillTextToPDF(paramMap);
}catch (DocumentException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace(); result = "failed";
}finally {
resultMap.put("result", result);
resultMap.put("targetFilePath", ConfigInfo.getHost() + "/file/target.pdf");
// 响应数据,为json,通过流传输数据
String resultJson = mapper.writeValueAsString(resultMap);
mapper.writeValue(response.getWriter(), resultJson); }
9、关于js中的JSON对象和JSON字符串之间的相互转换:
var jsonStr = '{ "name": "cxh", "sex": "man" }'; // JSON字符
var jsonObject = { "name": "cxh", "sex": "man" }; // JSON对象
// JSON对象转化为JSON字符
// 方法1
var jsonStr=jsonObject.toJSONString();
// 方法2
var jsonStr=JSON.stringify(jsonObject);
// JSON字符转化为JSON对象
// 方法一
var jsonObject = eval('(' + jsonStr + ')'); // 如果obj本来就是一个JSON对象,那么使用eval函数转换后,哪怕是多次转换,还是JSON对象
// 方法二
var jsonObject = jsonStr.parseJSON();// json对象使用parseJSON()函数处理后会有问题(抛出语法异常)
// 方法三
var jsonObject = JSON.parse(jsonStr);
// 方法四
$.parseJSON(jsonStr);
console.log(jsonObj.name); // 输出cxh
console.log(jsonObj.sex); // 输出man
// 假设有以下JSON数据:
var jsonStr = '{"name": "Tom", "age": 18}';
// 使用parseJSON()方法解析JSON数据:
var jsonObj = $.parseJSON(jsonStr);
console.log(jsonObj.name); // 输出cxh
console.log(jsonObj.sex); // 输出man
10、jquery生成json数据以及解析json数据
// 1 定义返回的教材数据json对象数组
var resultJson = [];
// 2 获取到下拉框选中的数据 并放入json数组中
var materialJson = [];
$('#select-container select option:selected').each(function() {
materialJson.push($(this).text());
});
materialJson.push($("#pageNumber").val());
// 3 定语json对象中的数据
var result = {
"materialType": materialType,
"type":type,
"materialName": materialName,
"id": id,
"materialNumber": materialNumber,
"pageNumber": pageNumber
};
// 4 将json对象放入json对象数组中
resultJson.push(result);
// 5 将json对象数组转为json格式字符串
JSON.stringify(resultJson);
如:
[{
"materialType": "自主研发教材",
"type": "whiteBoard",
"materialName": "二年级部编版课件(上册) 第七单元 (生字课件)20.雪孩子.pptx",
"id": "",
"materialNumber": "",
"pageNumber": "22"
}, {
"materialType": "自主研发教材",
"type": "whiteBoard",
"materialName": "二年级部编版课件(上册) 第七单元 (生字课件)20.雪孩子.pptx",
"id": "",
"materialNumber": "",
"pageNumber": "22"
}]
//