Ø
Json
的
全称:
JavaScriptObject Notation
Ø
Ø
Json
建构于两种结构:
Ø
“名称
/
值”对的集合(
Acollection of name/value pairs
)。不同的语言中,它被理解为对象(
object
),纪录(
record
),结构(
struct
),字典(
dictionary
),哈希表(
hashtable
),有键列表(
keyed list
),或者关联数组 (
associative array
)。
Ø
值的有序列表(
Anordered list of values
)。在大部分语言中,它被理解为数组(
array
)
Ø
JSON
对象是一个无序的“‘名称
/
值’对”集合。
Ø
一个对象以“
{”
(左括号)开始,“
}”
(右括号)结束。
Ø
每个“名称”后跟一个“
:”
(冒号);“‘名称
/
值’ 对”之间使用“
,”
(逗号)分隔。
Ø
如:
{
Ø
“name”:”
jackson
”,
Ø
“age”:100
Ø
}
Ø
Ø
数组是值(
value
)的有序集合。一个数组以“
[”
(左中括号)开始,“
]”
(右中括号)结束。值之间使用“
,”
(逗号)分隔
Ø
如:
{
Ø
“students”:
Ø
[
Ø
{“name”:”
jackson”,“age
”:100},
Ø
{“name”:”
michael”,”age
”:51}
Ø
]
Ø
}
创建Json
TestJson
package com.json.test;
import com.json.domain.Person;
import com.json.service.JsonService;
import com.json.tools.JsonTools;
public class TestJson {
public TestJson() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String msg = "";
JsonService service = new JsonService();
Person person = service.getPerson();
msg = JsonTools.createJsonString("person", person);
System.out.println(msg);
msg = JsonTools.createJsonString("List<Person>-->persons", service.getlistPerson());
System.out.println(msg);
msg = JsonTools.createJsonString("List<String>-->person", service.getListString());
System.out.println(msg);
msg = JsonTools.createJsonString("List<Map<>>-->persons", service.getListMaps());
System.out.println(msg);
}
}
Person
package com.json.domain;
public class Person {
private int id;
private String name;
public Person(int id, String name, String address) {
super();
this.id = id;
this.name = name;
this.address = address;
}
private String address;
public int getId() {
return id;
}
@Override
public String toString() {
return "Person [address=" + address + ", id=" + id + ", name=" + name
+ "]";
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Person() {
// TODO Auto-generated constructor stub
}
}
JsonService 应该用数据库来做
package com.json.service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.json.domain.Person;
public class JsonService {
public JsonService() {
// TODO Auto-generated constructor stub
}
//一个任意对象转换为JSON
public Person getPerson() {
Person person = new Person(1001, "jack", "beijing");
return person;
}
//一个任意对象的LIST转化为JSON
public List<Person> getlistPerson() {
List<Person> list = new ArrayList<Person>();
Person person1 = new Person(1001, "jack", "guangxi");
Person person2 = new Person(1002, "rose", "guangdong");
list.add(person1);
list.add(person2);
return list;
}
//任意LIST<String>转化为JSON对象
public List<String> getListString() {
List<String> list = new ArrayList<String>();
list.add("beijing");
list.add("shanghai");
list.add("hunan");
return list;
}
//一个List<Map<String, Object>>转化为JSON
public List<Map<String, Object>> getListMaps() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("id", 1001);
map1.put("name", "jack");
map1.put("address", "beijing");
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("id", 1002);
map2.put("name", "rose");
map2.put("address", "shanghai");
list.add(map1);
list.add(map2);
return list;
}
}
JsonTools(最主要的JSON类)
传入两个参数:
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, value);
package com.json.tools;
import net.sf.json.JSONObject;
public class JsonTools {
public JsonTools() {
// TODO Auto-generated constructor stub
}
/**
* @param key
* ��ʾjson�ַ��ͷ��Ϣ
* @param object
* �ǶԽ����ļ��ϵ�����
* @return
*/
public static String createJsonString(String key, Object value) {
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, value);
return jsonObject.toString();
}
}
JsonAction
package com.json.action;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.json.service.JsonService;
import com.json.tools.JsonTools;
public class JsonAction extends HttpServlet {
private JsonService service;
/**
* Constructor of the object.
*/
public JsonAction() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to
* post.
*
* @param request
* the request send by the client to the server
* @param response
* the response send by the server to the client
* @throws ServletException
* if an error occurred
* @throws IOException
* if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String jsonString = "";
String action_flag = request.getParameter("action_flag");
if (action_flag.equals("person")) {
jsonString = JsonTools.createJsonString("person", service
.getPerson());
} else if (action_flag.equals("persons")) {
jsonString = JsonTools.createJsonString("persons", service
.getlistPerson());
} else if (action_flag.equals("liststring")) {
jsonString = JsonTools.createJsonString("liststring", service
.getListString());
} else if (action_flag.equals("listmap")) {
jsonString = JsonTools.createJsonString("listmap", service
.getListMaps());
}
out.println(jsonString);
out.flush();
out.close();
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException
* if an error occurs
*/
public void init() throws ServletException {
// Put your code here
service = new JsonService();
}
}
结果:
{"person":{"address":"beijing","id":1001,"name":"jack"}}
{"List<Person>-->persons":[{"address":"guangxi","id":1001,"name":"jack"},{"address":"guangdong","id":1002,"name":"rose"}]}
{"List<String>-->person":["beijing","shanghai","hunan"]}
{"List<Map<>>-->persons":[{"id":1001,"address":"beijing","name":"jack"},{"id":1002,"address":"shanghai","name":"rose"}]}