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

关于学习json的总结

2016-01-03 13:28 771 查看

什么是json

JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,以文为础,且易于让人阅读,同时也方便了机器进行解析和生成。JSON简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构,其可以将JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web客户机传递给服务器端程序。JSON采用完全独立于程序语言的文本格式,但是也使用了类C语言的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言

JSON建构有两种结构

son简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构

  1、对象:对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。

  2、数组:数组在js中是中括号“[]”扩起来的内容,数据结构为 [“java”,”javascript”,”vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

   经过对象、数组2种结构就可以组合成复杂的数据结构了。

不多说,直接上代码

一:准备工作:

要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:

JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包。

导入下面的这几个包:



点击下载依赖包 http://download.csdn.net/detail/qq_25591985/9387669

二:java中使用json

目录的结构



User.java如下

package json;

public class User {
private String name;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}

}


jsonText.java如下

package json;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/*
*   要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:
*   JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包。  */
public class JsonText {

public static void main(String[] args) {
// TODO Auto-generated method stub
beanTOJson();
arrayToJson();
listToJson();
}
/**
* bean对象转为json
* return void
* */
public static void beanTOJson(){
User user=new User();
user.setAge(30);
user.setName("刘德华");
user.setSex("男");
JSONObject json=JSONObject.fromObject(user);
System.out.println("-----------------------------------------beanToJson() 开始------------------------------------------------");
System.out.println("这是对象bean转换为json"+json.getClass());
System.out.println("-----------------------------------------beanToJson() 结束------------------------------------------------");
}
/**
*array转为json
*return void
*/
public static void arrayToJson(){
User user=new User();
user.setAge(30);
user.setName("刘德华");
user.setSex("男");
User user1=new User();
user.setAge(30);
user.setName("张学友");
user.setSex("男");
User[] array=new User[]{user,user1};
JSONArray json=JSONArray.fromObject(array);
System.out.println("-----------------------------------------arrayToJson() 开始------------------------------------------------");
System.out.println("这是对象array转换为json"+json.toString());
System.out.println("-----------------------------------------arrayToJson() 结束------------------------------------------------");
}
/**
*List转为json
*return void
*/
public static void listToJson(){
User user=new User();
user.setAge(30);
user.setName("刘德华");
user.setSex("男");
User user1=new User();
user.setAge(30);
user.setName("张学友");
user.setSex("男");
List<User> list =new ArrayList<User>();
list.add(user);
list.add(user1);
JSONArray json=JSONArray.fromObject(list);
System.out.println("-----------------------------------------listToJson() 开始------------------------------------------------");
System.out.println("这是对象list转换为json"+json.toString());
System.out.println("-----------------------------------------listToJson() 结束------------------------------------------------");
}
}


下面对于各部分的代码做说明:

bean对象转为json

return void



运行结果如下



2. 数组转换成json代码



2. list转换成json代码



四:jsp中使用json

1、json字符串和json对象的区别。

字符串:这个很好解释,指使用“”双引号或’’单引号包括的字符。例如:var comStr = ‘this is string’;

json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = “{StudentID:’100’,Name:’tmac’,Hometown:’usa’}”;

json对象:指符合json格式要求的js对象。例如:var jsonObj = { StudentID: “100”, Name: “tmac”, Hometown: “usa” };

直接上图上代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="${pageContext.request.contextPath}/jslib/jquery-1.11.1.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
/**
* 方法一,用eval解析出json字符串,不过eval解析json有安全隐患
*/
var user='{"name":"张三","sex":"男"}'
var userb=eval("("+user+")");
alert(userb.name+" "+userb.sex);
/**提供JSON.parse()方法解析JSON,提供JSON.stringify()方法生成JSON,stringify()用于从一个对象解析出字符串用eval解析出json字符串,不过eval解析json有安全隐患
* 现在大多数浏览器(IE8及以上,Chrome和Firefox差不多全部)自带原生JSON对象
*/
$(function(){
var json=JSON.parse( user );
$("#json").click(function(){
alert(json.sex);
alert(json.name); //或者alert(obj.person[0]["name"])
})
})
</script>
<title>Insert title here</title>
</head>
<body>
<input type="button" value="从json中读取数据" id="json"/>
</body>
</html>




运行结果如下:







下面介绍eval和JSON.parse

eval:

JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

JSON.parse

现在大多数浏览器(IE8及以上,Chrome和Firefox差不多全部)自带原生JSON对象,提供JSON.parse()方法解析JSON,提供JSON.stringify()方法生成JSON,请使用这两个方法!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: