zoukankan      html  css  js  c++  java
  • json-lib简单处理json和对json的简单介绍

    JSON

    1.json是什么?
    *它是js提供的一种数据交换格式

    2.json的语法
    *{}:是对象!
    >属性名必须使用双引号括起来!单引号不行!!!
    >属性值:
    *null
    *数值
    *数组,使用[]括起来
    *对象
    *字符串
    *boolean值
    3.应用json
    *var person={"name":"zhangsan","password":"961012gz","age":12};
    函数eval():
    将字符串当成js代码执行,一般格式为: eval("("+str+")");返回的是一个对象

    4.json与xml比较
    *可读性:xml胜出
    *解析难度:json主场优势
    *流行度:xml流行很多年

    -------------------------------
    json-lib
    1、是什么?可以将json数据转换成json字符串
    2、导入jar包 略
    3、核心类
    *JSONObject--》Map
    >toString()
    >JSONObject map=JSONObject.fromObject(person); 把对象转换成JSONObject独享
    *JSONArray-->List
    >toString
    >JSONArray jsonArray=JSONObject.fromObject(list):把list转化成为JSONArray对象

    了解json数据的小例子:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'json1.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <script type="text/javascript">
            window.onload=function(){
                //var person={"name":"guozhen","age":12,"sex":"男"};
                //alert(person.name+" ,"+person.age+" ,"+person.sex);
                
                //var str="{"name":"guozhen","age":12,"sex":"男"}";
                //var person=eval("("+str+")");
                //alert(person.name+" ,"+person.age+" ,"+person.sex);
                
                var str="1+2";
                var num=eval("("+str+")");
                alert(num);
            }
        </script>
      </head>
      
      <body>
        <h1>json的简单应用!</h1>
      </body>
    </html>
    View Code

    使用json数据类型进行简单异步刷新:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'json2.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
    <script type="text/javascript">
        window.onload=function(){
            var btn=document.getElementsByTagName("button")[0];
            btn.onclick=function(){
                var xmlHttp=createXMLHttpRequest();
                xmlHttp.open("GET","<c:url value='/AServlet'/>",true);
                xmlHttp.send(null);
                xmlHttp.onreadystatechange=function(){
                    if(xmlHttp.status==200 && xmlHttp.readyState==4){
                        var text=xmlHttp.responseText;
                        var person=eval("("+text+")");
                        var h3=document.getElementsByTagName("h3")[0];
                        h3.innerHTML="name:"+person.name+",age:"+person.age+",sex:"+person.sex;
                    }
                };
            };
        };
        
        
        function createXMLHttpRequest(){
            try{
                return new XMLHttpRequest();
            }catch(e){
                try{
                    return new ActiveXObject("Msxml2.XMLHTTP");
                }catch(e){
                    try{
                        return new ActiveXObject("Microsoft.XMLHTTP");
                    }catch(e){
                        alert("哥们,你用的什么浏览器啊!");
                        throw e;
                    }
                }
            }
        }
    </script>
      </head>
      
      <body>
      <button>点击我</button>
        <h1>JSON之Hello World</h1>
        <h3></h3>
      </body>
    </html>
    json2.jsp
    package cn.itcast.web.servlet;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class AServlet extends HttpServlet{
        
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            String str="{"name":"zhangSan","age":18,"sex":"male"}";
            resp.getWriter().print(str);
        }
    
    }
    AServlet

    使用json-lib的操作例子:

    package cn.itcast.demo1;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    
    import org.junit.Test;
    
    public class Demo1 {
    
        /**
         * JSONObject
         */
        /*
         * 当map用
         */
        @Test
        public void fun1(){
            JSONObject map=new JSONObject();
            map.put("name", "zhangSan");
            map.put("age", 23);
            map.put("sex","male");
            
            String s=map.toString();
            System.out.println(s);
        }
        
        /*
         * 当你已经有一个Person对象时,可以把Person转成JSONObject对象
         */
        @Test
        public void fun2(){
            Person p=new Person("liSi",32,"male");
            //把对象转换成JSONObject类型
            JSONObject s=JSONObject.fromObject(p);
            System.out.println(s);
        }
        
        /**
         * JSONArray
         */
        @Test
        public void fun3(){
            Person p1=new Person("zhanSan",32,"male");
            Person p2=new Person("liSi",23,"women");
            JSONArray list=new JSONArray();
            list.add(p1);
            list.add(p2);
            System.out.println(list);
        }
        
        /*将对象集合转换成为JSONArray*/
        @Test
        public void fun4(){
            Person p1=new Person("zhanSan",32,"male");
            Person p2=new Person("liSi",23,"women");
            List<Person> li=new ArrayList<Person>();
            li.add(p1);
            li.add(p2);
            System.out.println(JSONArray.fromObject(li));
        }
        
        public static void main(String[] args) {
            Demo1 d=new Demo1();
            d.fun4();
        }
        
        
    }
    Demo1.java
    package cn.itcast.demo1;
    
    public class Person {
        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;
        }
        public Person() {
            super();
            // TODO Auto-generated constructor stub
        }
        public Person(String name, int age, String sex) {
            super();
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
        
    }
    Person.java
  • 相关阅读:
    学习WindowsPhone 2013/12/22
    spring-aop学习
    easymock+junit+spring学习·
    javaWeb实现文件上传与下载 (转)
    Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
    jsp自定义标签
    listener监听器
    移植一个项目到本地的问题
    struts1拦截器
    eclipse开发 javafx(转)
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5762556.html
Copyright © 2011-2022 走看看