您的位置:首页 > Web前端 > JavaScript

解析JSON数据系列1:在网页上显示Json数据

2015-10-10 21:05 639 查看
Json的全称:JavaScriptObjectNotation

Json的两种构建结构:“名称/值”对的集合、值的有序列表。

移动客户端(android和iphone)接收返回的数据和平台无关,平台可以是Java、.net或者php。

移动客户端请求服务器端,一般是采用Json这种轻量级的形式。

JSON的数据格式:

JSON对象是一个无序的“‘名称/值’对”集合。

一个对象以“{”(左括号)开始,“}”(右括号)结束。

每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。

如:{

"name":"jackson",

"age":100

}

数组是值(value)的有序集合。一个数组以“[”(左括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔

如:{

“students”:

[

{"name":"jackson","age":100},

{"name":"michael","age":51}

]

}

这个例子采用的是服务器端:(jsp+servlet)(生成Json的字符串),客户端:解析Json数据。在网页上显示Json的字符串。

整体思路:新建一个web工程,定义一个实体类Person,在里面定义三个字段,定义它的构造函数,get、set方法,toString方法。定义一个JsonService类,在里面定义getPerson方法返回一个Person对象,定义getlistPerson方法返回一个装有Person类型的List对象,定义getListString方法返回一个装有字符串类型的List对象,定义getListMaps方法返回一个装有Map类型的List对象。定义一个JsonTools类,在里面写一个构建Json字符串的方法。定义一个TestJson类,在里面定义main方法,在这个方法中调用createJsonString返回Json对象并输出。定义一个servlet类JsonAction,在里面把doGet方法中的代码改为this.doPost(request,
response),在doPost方法中添加请求和接收的方式,调用createJsonString返回Json对象并输出。

Person.java文件:

public class Person {

private int id;
private String name;
private String adress;

public Person(int id, String name, String adress) {
super();
this.id = id;
this.name = name;
this.adress = adress;
}

public Person() {
// TODO Auto-generated constructor stub
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAdress() {
return adress;
}

public void setAdress(String adress) {
this.adress = adress;
}

@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", adress=" + adress
+ "]";
}

}


JsonService.java文件:

public class JsonService {

public JsonService() {
// TODO Auto-generated constructor stub
}

public Person getPerson(){
Person person =new Person(1001,"jack","beijing");
return person;

}

public List<Person> getlistPerson(){
List<Person> list=new ArrayList<Person>();
Person person1=new Person(1001,"jack","beijing");
Person person2=new Person(1001,"rose","shanghai");
list.add(person1);
list.add(person2);

return list;
}

public List<String> getListString(){
List<String> list=new ArrayList<String>();
list.add("北京");
list.add("上海");
list.add("广州");
return list;
}

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.java文件:

public class JsonTools {

public JsonTools() {
// TODO Auto-generated constructor stub
}
/**
*
* @param key  表示json字符串的头信息
* @param value  是对解析的集合的类型
* @return
*/
public static String createJsonString(String key,Object value){
JSONObject jsonObject=new JSONObject();
jsonObject.put(key, value);
return jsonObject.toString();

}

}
TestJson.java文件:

public class TestJson {

public TestJson() {
// TODO Auto-generated constructor stub
}

public static void main(String[] args) {
String msg="";
JsonService service=new JsonService();
//		Person person=service.getPerson();
//		msg=JsonTools.createJsonString("person", person);
//		System.out.println(msg);
msg=JsonTools.createJsonString("persons", service.getListMaps());
System.out.println(msg);
}
}

JsonAction.java文件:

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

this.doPost(request, response);
}

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=JsonTools.createJsonString("person", service.getlistPerson());
out.println(jsonString);
out.flush();
out.close();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: