关于学习json的总结

来源:互联网 发布:mac桌面的文件不见了 编辑:程序博客网 时间:2024/04/20 19:10

什么是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,请使用这两个方法!

2 0
原创粉丝点击