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();
}
}
}