后端接收json数据

JSON是什么?

首先,在接收json的数据的时候,我们要了解JSON是什么。
JSON 是指的是JavaScript对象的表示法,也是轻量级的文本数据交换格式,它具有自我描述性,容易理解。json也是是一种轻量级的前端后端以及网络传输的数据交换格式,就是一串字符串,只不过元素会使用特定的符号标注。 {} 双括号表示对象,[] 中括号表示数组,”” 双引号内是属性或值,: 冒号表示后者是前者的值。

JSON语法

json数据的书写格式是 : 名称 :值
例如

“Name” :“JSON”

JSON值

JSON 值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null
    JSON还包括了对象和数组的使用,例子如下

//这条语句是JSON对象,用花括号扩起来的,对象中可以包括多个名称:值
{ 
  "Name" : "JSON" , "Sex" : "男" 
 }
  //下面是JSON数组,数组可以包括多个对象
{   "arrays" : [
{   "Name" : "JSON" , "Sex" : "男" },
{   "Name" : "JSON1" , "Sex" : "男" },
{   "Name" : "JSON2" , "Sex" : "男" }
]
}

JSON在后端的使用

在后端接收JSON数据的时候,我们要导入net.sf.json.JSONObject这个包。
在接收的过程中,我们要把后端的数据封装成json数据的格式有以下这些格式转换
1.List

List list = new ArrayList();
list.add("123");
list.add("234");
JSONArray jsonArray = JSONArray.fromObject( list ); 

2.Map

   Map map = new HashMap(); 
 map.put(“name”, “json”); 
 map.put(“int”, new Integer(2)); 
 JSONObject json = JSONObject.fromObject(map); 

3.Bean

JSONObject jsonObject = JSONObject.fromObject(new JsonBean()); 

4.数组

 boolean[] boolArray = new boolean[] { true, false, true }; 
  JSONArray jsonArray1 = JSONArray.fromObject(boolArray); 

5.一般的数据类型

JSONArray jsonArray =JSONArray.fromObject([‘json’,’is’,’easy’]” ); 

接收前端发来的JSON数据

//前端发送的时候,用POST请求发送的数据在user1中,前面说过,在数据交互的时候,其实有一个字符串
@RequestMapping(value = "/login", method = RequestMethod.POST)
	public void login(HttpServletResponse response, 
			@RequestBody String user1) {
			//在获取到这个字符串的时候,我们进行转换,然后利用toBean方法转换成我们所需要的实体类,当然,这个实体类里面要有对应的字段,然后我们就可以进行相应的操作
			JSONObject v = JSONObject.fromObject(user1);
	    	User user = (User)JSONObject.toBean(v,User.class);
	    	...
	    	//在执行完对应的操作后,如果前端需要数据,我们可以把对应的数据进行封装,然后在发送要前台,HttpReturn.reponseBody是返回json数据的方法
	    	Map map = new HashMap();
	    	map.add("name","Json");
	    	JSONObject json = JSONObject.fromObject(map); 
			HttpReturn.reponseBody(response, json);
}

返回json数据的方法

public class HttpReturn {

public static void reponseBody(HttpServletResponse response,JSONArray jsonarray) {
		byte[] dataByte = null;
	    ServletOutputStream output;
		try {
			
			output = response.getOutputStream();
			dataByte = jsonarray.toString().getBytes("UTF-8");
		    output.write(dataByte);
		} catch (IOException e) {
			e.printStackTrace();
		}
	    
	}

	public static void reponseBody(HttpServletResponse response, String string) {
		byte[] dataByte = null;
	    ServletOutputStream output;
		try {
			output = response.getOutputStream();
			dataByte = string.getBytes("UTF-8");
		    output.write(dataByte);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static void reponseBody(HttpServletResponse response, JSONObject jsonObject) {
		byte[] dataByte = null;
	    ServletOutputStream output;
		try {
			output = response.getOutputStream();
			dataByte = jsonObject.toString().getBytes("UTF-8");
		    output.write(dataByte);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值