zoukankan      html  css  js  c++  java
  • json学习系列(2)-生成JSONObject的方法

    生成JSONObject一般有两种方式,通过javabean或者map类型来生成。如下面的例子:

    先定义一个User实体类:

    package com.pcitc.json;
    
    /**
     * 用户实体类
     * 
     * @Description
     * @author admin
     * @created 2015年6月29日 下午3:43:15
     * @version
     * @history
     * @see
     */
    public class User {
        public String username;
        public String password;
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    }

    测试类如下:

    package com.pcitc.json;
    
    import java.util.HashMap;
    import net.sf.json.JSONObject;
    
    /**
     * 测试类
     * 
     * @Description
     * @author admin
     * @created 2015年6月29日 下午3:57:01
     * @version
     * @history
     * @see
     */
    public class Test {
    
        public static void main(String args[]) {
    
            User user = new User();
            user.setUsername("root");
            user.setPassword("1234");
            // 通过javabean来生成JSONObject对象
            JSONObject json1 = JSONObject.fromObject(user);
            System.out.println("javabean方式:
    " + json1.toString());
            HashMap<Object, Object> userMap = new HashMap<Object, Object>();
            userMap.put("username", "root");
            userMap.put("password", "1234");
            // 通过map类型来生成JSONObject
            JSONObject json2 = JSONObject.fromObject(userMap);
            System.out.println("map方式:
    " + json2.toString());
    
        }
    }

    测试结果如下所示:

    接下来从源码层次分析一下JSONObject.fromObject()方法:

    public static JSONObject fromObject(Object object)
    {
        return fromObject(object, new JsonConfig());
    }

    此函数可以接受的参数类型为:JSON formatted strings,Maps,DynaBeans and JavaBeans。
    【注意】DynaBeans是commons-beanutils定义的动态bean。DynaBean并不是Java中所定义的Bean,而是一种"假"的Bean。因为它并不是通过getXXX和setXXX方法,对XXX属性进行取值和设值的。
    如果object是其他类型的参数呢?比如说数字,逻辑值,非json格式的字符串,那么将生产空的JSONObject对象。

    if (JSONUtils.isNumber(object) || JSONUtils.isBoolean(object) || JSONUtils.isString(object))
    {
        return new JSONObject();
    }

    JSONObject的构造函数有两个:

    public JSONObject()
    {
            this.properties = new ListOrderedMap();
    }
    public JSONObject(boolean isNull)
    {
            this();
            this.nullObject = isNull;
    }

    不过,通常都是使用第一个无参的构造函数,第二个构造函数使用情况很少。

  • 相关阅读:
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月19日)
    2016年小升初海淀区全部初中排名分析
    LVM Linear vs Striped Logical Volumes
    Spring Data Redis实现消息队列——发布/订阅模式
    Redis Pubsub命令用法
    mysql 截取身份证出生日期
    MA均线组合
    Eclipse代码格式化规范
    JSON Web Token实际应用
    JSON Web Token单点登录设计
  • 原文地址:https://www.cnblogs.com/longshiyVip/p/4607698.html
Copyright © 2011-2022 走看看