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"
    }]

 

 

 

//