1.Json概念:特殊的字符串
JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级
数据交换格式。
XML也是一种数据交换格式,为什么没有选择XML呢?
因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,
增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。
2.对象和Json之间的转换
<1>对象--->字符串: JsonObject jsonObject=JsonObject.fromObject(对象);<2>字符串-->对象:
①.JsonObject jsonObject=JsonObject.fromObject(字符串);
②.对象=jsonObject.toBean(jsonObject,对象.class);
3.对象集合和字符串之间的转换
<1>对象集合--->字符串JsonArray jsonArray=JsonArray.fromObject(对象集合);
<2>字符串---->对象集合
JsonArray jsonArray=JsonArray.fromObject(字符串);
对象集合=jsonArray.toCollection(jsonArray);
4.在JSP中使用Json
在jsp页面引入json.js文件<1>Json.stringify(对象)----->将JS对象转换成Json字符串
<2>Json.parse-------->将Json字符串转成Js对象
http://www.bejson.com/ 校验Json格式
例子
package com.zking.entity;
public class Person {
private int pid;
private String pname;
private int page;
public Person() {
super();
// TODO Auto-generated constructor stub
}
public Person(int pid, String pname, int page) {
super();
this.pid = pid;
this.pname = pname;
this.page = page;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
@Override
public String toString() {
return "Person [page=" + page + ", pid=" + pid + ", pname=" + pname
+ "]";
}
}
package com.zking.test;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;
import com.zking.entity.Person;
/**
* {} Json对象 JsonObject
* [] Json对象集合 JsonArray
*
*/
public class TestJson {
//对象和Json之间的转换
/**
* 对象转成Json(常用)
* <1>对象--->字符串: JsonObject jsonObject=JsonObject.fromObject(对象);
*/
@Test
public void testObjectToJson(){
Person per=new Person(1,"admin",20);
JSONObject jb=JSONObject.fromObject(per);
System.out.println(jb.toString());//控制台输出: {"page":20,"pid":1,"pname":"admin"}
}
/**
* json字符串转成对象
* <2>字符串-->对象:
* ①.JsonObject jsonObject=JsonObject.fromObject(字符串);
* ②.对象=jsonObject.toBean(jsonObject,对象.class);
*/
@Test
public void testJsonToObject(){
Person per=new Person(1,"admin",20);
JSONObject jb=JSONObject.fromObject(per);
String str=jb.toString();
Person per2=(Person)JSONObject.toBean(jb,Person.class);
System.out.println(per2);//控制台输出: Person [page=20, pid=1, pname=admin]
}
//对象集合和字符串之间的转换
/**
* 对象集合转成Json(常用)
* <1>对象集合--->字符串
* JsonArray jsonArray=JsonArray.fromObject(对象集合);
*/
@Test
public void testArrayToJson(){
List<Person> lt=new ArrayList<Person>();
for (int i = 1; i <= 36; i++) {
lt.add(new Person(i,"G160628S"+i,19));
}
JSONArray ja=JSONArray.fromObject(lt);
System.out.println(ja.toString());
}
/**
* 将Json转成对象集合
* <2>字符串---->对象集合
* JsonArray jsonArray=JsonArray.fromObject(字符串);
* 对象集合=jsonArray.toCollection(jsonArray);
*/
public void testJsonToArray(){
List<Person> lt=new ArrayList<Person>();
for (int i = 0; i <= 36; i++) {
lt.add(new Person(i,"G160628S"+i,19));
}
JSONArray ja=JSONArray.fromObject(lt);
List<Person> lt2=(List<Person>) JSONArray.toCollection(ja,Person.class);
for (Person p : lt2) {
System.out.println(p);
}
}
}
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="jQuery/jquery-3.1.1.min.js"></script>
<script type="text/javascript">
function Person(pid,pname,page){
this.pid=pid;
this.pname=pname;
this.page=page;
}
$(function(){
$("#jsonToObject").click(function(){
//把json转成对象(最常用)
var per=new Person(1,"admin",23);
var str=JSON.stringify(per);
var perVar=JSON.parse(str);
alert(perVar.pname);
});
$("#ObjectToJson").click(function(){
var per=new Person(1,"admin",21);
//将对象转成Json(不常用)
var str=JSON.stringify(per);
alert(str);
});
});
</script>
</head>
<body>
<input type="button" value="Json转成对象" id="jsonToObject"/>
<input type="button" value="对象转成Json" id="ObjectToJson"/>
</body>
<%-- 浏览器查看: http://localhost:8080/web05_Json/index.jsp --%>
</html>
要记得导包哦
如有错误的地方,还请大家帮忙指出来。
1609

被折叠的 条评论
为什么被折叠?



