使用com.alibaba.fastjson.JSON中JSON.parseObject方法将参数转为对象失败,BufferedReader中使用readLine获取某个参数失败

问题描述

前端

前端通过post方式提交了对象

{
    
    
    "isTop": 0,
    "img_title": "撒打发士大夫",
    "author": "阿发送达方式大",
    "title": "按时发大水",
    "img_src": "files\\addIndexBanner\\2023-05-20\\20230520115853874.jpg",
    "content": "<p>发沙发撒地方</p>",
    "releaseDateTem": "2023-05-20 11:58:57",
    "status": "1"
}

后端

后端通过使用BufferedReader 的readLine方法将参数读取,并调用JSON.parseObject方法将其解析为Banner类型的对象

 BufferedReader br = req.getReader();
 String params = br.readLine(); //json字符串
 //转为Brand对象
 Banner banner = JSON.parseObject(params, Banner.class);

错误

  1. 后端的params 可能根本拿不到,全部参数为空
  2. 后端的params 中部分字段为null,拿不到

解决

下面两项依次检查

如果全部字段为空

前端需要将JSON转为JSON字符串

	var myData = {
    
    
		//是否置顶,默认否,0
		isTop:0,
	};
	myData.img_title = $("#img_title").val();
	myData.author = $("#author").val();
	myData.title = $("#title").val();
	myData.img_src = $("#imgSrc").val();
	myData.content = content;
	myData.releaseDateTem = $("#releaseDateTem").val();
	// 0 草稿,1发布
	myData.status = type;
	console.log(myData);
	x = JSON.stringify(myData)

注意 x = JSON.stringify(myData),此时你在提交x即可

如果部分字段为空

你需要检查你的pojo类,按照我上面的代码来说,应该检查Banner类,看看类中是否给所有的字段都生成了setter和getter,一般是有的字段没有生成造成的。

猜你喜欢

转载自blog.csdn.net/Gabriel_wei/article/details/130779897