分享

关于学习json的总结

 苏氏IT馆 2016-01-04

什么是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;
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

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() 结束------------------------------------------------");     
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71

下面对于各部分的代码做说明:
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./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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

这里写图片描述

运行结果如下:

这里写图片描述

这里写图片描述

这里写图片描述

下面介绍eval和JSON.parse

eval:

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

JSON.parse

现在大多数浏览器(IE8及以上,Chrome和Firefox差不多全部)自带原生JSON对象,提供JSON.parse()方法解析JSON,提供JSON.stringify()方法生成JSON,请使用这两个方法!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多