zoukankan      html  css  js  c++  java
  • json入门

    简介:从javascript1.2开始,创建对象有了一种更为简便的方法----使用JSON语法可以避免书写函数,也可以避免使用new关键字,可以直接创建一个javascript对象。为了创建javascript对象,可以使用花括号,然后将每个属性写成"key:value"对的形式。

    使用JSON语法创建javascript对象时,属性值不仅可以是普通字符串,也可以是任何基本数据类型,还可以是函数,数组,甚至另一个JSON语法创建的对象。如:

    复制代码
    <script type="text/javascript">
      var person = 
      {
           name : "夜半风雨",
           gender : "",
           age : 22,
           schools : ['小学','中学','大学'],
           parents : [
              {
                 name : "father",
                 age : 50,
                 address : "广州"
              }
              ,
              {
                 name : "mother",
                 age : 45,
                 address : "广州"
              }
           ],
           say : function() {
            document.writeln("姓名:"+this.name+" "+"性别:"+this.gender+" "+"年龄:"+this.age);
           }
      };
      person.say();
      </script>
    复制代码

    1:javascript对JSON的支持

    下面给一个javascript创建对象的demo

    在服务器端Servlet

            String msg ="{name : '夜半风雨',gender : '男',age : 22,schools : ['小学','中学','大学'],parents : [{name : 'father',age : 50,address : '广州' } , {name : 'mother', age : 45,address : '广州'} ],say : function() {document.writeln('姓名:'+this.name+' <br/>'+'性别:'+this.gender+' <br/>'+'年龄:'+this.age+' <br/>');} };";
            request.setAttribute("msg", msg);
            request.getRequestDispatcher("index.jsp").forward(request, response);

    浏览器端Jsp页面

    <script type="text/javascript">
      var msg = ${requestScope.msg};
      //创建对象
      var person = eval(msg);
      person.say();
      </script>

    最后的效果图为;

    姓名:夜半风雨
    性别:男
    年龄:22 

    2:java对JSON的支持

    如何在服务器端生成符合JSON规范的字符串?

    • 手动拼写
    • 使用json-lib集成包

    json-lib包用于将java中entity,map,collection,数组和XML转换成JSON格式

    这里所有用到的包在我前面的文章中已经介绍过了,现在就以entity来简单说明一下json-lib的用法

    先建立2个实体类

    Student

    复制代码
    public class Student {
    
        private String name;
        private int age;
        public Student(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
        ...public Getter and Setter...
    }
    复制代码

    Teacher

    public class Teacher {
    
        private String name;
        private Set<Student> students = new HashSet<Student>();
        
            Getters and Setters...
     }

    测试类TestJavaBean

    复制代码
    public static void main(String[] args) {
            
            Student stu = new Student("夜半风雨", 22);        
            JSONObject jsonObject = JSONObject.fromObject(stu);
            System.out.println(jsonObject.toString());
            
            Teacher teacher = new Teacher();
            teacher.setName("李刚");
            teacher.getStudents().add(new Student("张三", 21));
            teacher.getStudents().add(new Student("李四", 21));
            teacher.getStudents().add(new Student("王五", 21));
            JSONObject jsonObject2 = JSONObject.fromObject(teacher);
            System.out.println(jsonObject2.toString());
        }
    复制代码

    结果

    {"name":"夜半风雨","age":22}
    {"students":[{"age":21,"name":"李四"},{"age":21,"name":"张三"},{"age":21,"name":"王五"}],"name":"李刚"}
  • 相关阅读:
    F5 BIG-IP之一前期随笔(应用交付网络产品)
    F5 BIG-IP LTM负载均衡策略
    OA-APP增加空间
    如何在Windows服务器上新建一个Powershell.ps1的定时任务
    领益科技:查询AD中被锁定的账号并进行解锁
    使用Python创建简单的HTTP和FTP服务器
    Mysql binlog日志太多,占用大量磁盘空间该如何正确处理
    【vspher运维】ESXI 日志文件
    【vsphere运维】ESXI命令行操作虚拟机
    内容图片切换
  • 原文地址:https://www.cnblogs.com/leischen/p/2510959.html
Copyright © 2011-2022 走看看