• JavaWeb之JSON


    一、什么是JSON?

      JSON: JavaScript Object Notation(JavaScript 对象表示法)

      JSON 是存储和交换文本信息的语法。类似 XML。

      JSON 比 XML 更小、更快,更易解析。

    二、JSON语法规则 

      数据在名称/值对中("name" : "菜鸟教程" 和 name = "菜鸟教程" 一样
      数据由逗号分隔
      大括号保存对象
      中括号保存数组

      JSON对象(在大括号({})中书写)

      var p ={name:"tom",age:50};

      document.write(p.name);

      JSON数组(在中括号中书写)

      var pp =[{name:"tom",age:50},{name:"milk",age:22}];

      document.write(pp[1].name);

    三、JSON中的方法

      3.1、JSON.parse()方法 

      JSON 通常用于与服务端交换数据。在接收服务器数据时一般是字符串。我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。

      如:我们在服务器端有{name:"tom",age:17}

        使用 JSON.parse() 方法处理以上数据,将其转换为 JavaScript 对象

        var peo = JSON.parse('{name:"tom",age:17}');

        注意:解析前要确保你的数据是标准的 JSON 格式,否则会解析出错。

      在如:使用 AJAX 从服务器请求 JSON 数据,并解析为 JavaScript 对象 

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            myObj = JSON.parse(this.responseText);  //如果JSON数据是数据解析成对象,如果是数组,也解析成数组。
            document.getElementById("demo").innerHTML = myObj.name;
        }
    };
    xmlhttp.open("GET", "/try/ajax/json_demo.txt", true);
    xmlhttp.send();

      3.2、JSON.stringify()  

      JSON 通常用于与服务端交换数据。在向服务器发送数据时一般是字符串。我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。

      如:我们需要将 var obj ={name:"tom",age:18};发送给服务器

         JSON.stringify() 方法处理以上数据,将其转换为字符串:

          JSON.stringify(obj);

        再如:将javascript数组转换成JSON字符串  

        var arr = [ "Google", "Runoob", "Taobao", "Facebook" ];
        var myJSON = JSON.stringify(arr);
        document.getElementById("demo").innerHTML = myJSON;

    四、使用JSON框架

      使用框架必然要导入的是jar包,最后可以为大家提供jar包,接下来我们看它的用法。

      

    package testJSON;
    
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import net.sf.json.JsonConfig;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    import org.junit.Test;
    
    import com.jxlg.domain.Book;
    import com.jxlg.util.C3P0Util;
    
    public class testJSON {
    
    	@Test
    	//使用JSONObject对象封装对象数据类型
    	public void test() {
    		Book b = new Book();
    		b.setName("账单");
    		b.setId("100");
    		b.setPrice(55);
    		
    		String s = JSONObject.fromObject(b).toString();
    		System.out.println(s);
    	}
    	@Test	//使用JSON对象封装List<Book>
    	public void test1(){
    		List<Book> books = new ArrayList<Book>();
    		Book b1 =new Book();
    		Book b2 =new Book();
    		Book b3 =new Book();
    		b1.setName("账单");
    		b1.setId("1001");
    		b1.setPrice(55);
    		b2.setName("花花");
    		b2.setId("1002");
    		b2.setPrice(23);
    		b3.setName("阿德");
    		b3.setId("1003");
    		b3.setPrice(11);
    		books.add(b1);
    		books.add(b2);
    		books.add(b3);
    		String m = JSONArray.fromObject(books).toString();
    		System.out.println(m);
    	}
    	@Test
    		//使用JsonConfig去除不需要的字段
    	public void test3() throws SQLException{
    		QueryRunner qr =new QueryRunner(C3P0Util.getDateSource());
    		List<Book> books = qr.query("select * from book", new BeanListHandler<Book>(Book.class));
    		JsonConfig jc = new JsonConfig();
    		jc.setExcludes(new String[]{"id","category","description"});
    		String m = JSONArray.fromObject(books,jc).toString();
    		System.out.println(m);
    	}
    }
    

      结果:

       

    把这些数据都封装成了JSON类型的数据,可以在前端更好的获取显示

    提供使用JSON中需要的jar包,不谢:

        链接:http://pan.baidu.com/s/1pKBwSOV 密码:iru5

                                                                          20:08:44

      

  • 相关阅读:
    C语言:运算结果保留两位小数
    FFmpeg: AVFrame中的data和extend_data的区别
    android studio: 配置版权信息(转)
    C++: C++11 成员函数作为pthread线程 (转)
    android studio: 取消行注释在第一列
    C 语言 int 读写是否需要加锁
    【转】浅析Linux中的零拷贝技术--简单形象
    【转】Linux 内核态与用户态--简明清晰的介绍
    delete如何找到多重继承对象的内存块起始地址
    【转】内存管理内幕mallco及free函数实现--简易内存分配器、内存池、GC技术
  • 原文地址:https://www.cnblogs.com/cxyzyh2017/p/6548108.html
Copyright © 2020-2023  润新知