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方式:\r\n" + 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方式:\r\n" + 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;
}

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

时间: 2024-10-11 23:17:59

json学习系列(2)-生成JSONObject的方法的相关文章

(2)-生成JSONObject的方法

生成JSONObject一般有两种方式,通过javabean或者map类型来生成.如下面的例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public class User { public String username; public String password; public String getUsername() { return username; } public void setUsername(String

【JSON异常系列】new JSONObject对象时卡死原因

8:47 2015/7/11 昨天晚上在使用JSON时,在创建JSONObject对象的时候不报错也不抛出异常,但就是new 不出来JSONObject的对象,这是一个很奇葩的现象. 最后才发现原来是少了一些必要的jar包, 在struts2中,使用JSON所必需的Jar包有: 1.commons-beanutils.jar 2.commons-collections.jar 3.commons-langs.jar 4.commons-logging.jar 5.ezmorph.jar 6.js

json学习系列(3)-JSONObject的过滤设置

我们通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值.例如下面的实体类: package com.pcitc.json; /** * Person实体类 * * @Description * @author admin * @created 2015年6月29日 下午4:08:40 * @version * @history * @see */ public class Person { private String name; private String add

json学习系列(6)JSONObject和JSONArray是JDK的集合部分延伸

我一直觉得JSONObject和JSONArray是JDK集合部分的延伸,它们与JDK的List和Map一脉相承.通过研究JSONObject和JSONArray的结构,我们顺便也复习一下JDK的内容. 首先看一下JSONObject和JSONArray 的结构: final class JSONObject extends AbstractJSON implements JSON, Map, Comparable final class JSONArray extends AbstractJS

json学习系列(4)-JSONString对象的optXXX方法的使用

在JSONObject获取value有多种方法,如果使用 getXxx()类型的方法获取value,如getString("key").如果key不存在的话,这些方法无一例外的都会抛出异常.如果在线环境抛出异常,就会使出现error页面,影响用户体验,针对这种情况最好是使用JSONObject的optXXX方法. 来看一下几个getXxx()方法的源代码实现: getString:如果key不存在,getString方法会抛出异常,如下所示: public String getStri

json学习系列(5)-json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to

最近在使用json的时候,报了下面的错误: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.lang.String 这种错误非常常见,因为json转化为javabean的时候,默认为MorphDynaBean类的.如下面的例子: 在json字符串转javabean时,一般的对象,可以直接转,如:一个学生类,属性有姓名.年龄等. public class Student implements java.io.Serializable

json教程系列(4)-optXXX方法的使用

在JSONObject获取value有多种方法,如果key不存在的话,这些方法无一例外的都会抛出异常.如果在线环境抛出异常,就会使出现error页面,影响用户体验,针对这种情况最好是使用optXXX方法. 1 public String getString(String key) 2 { 3 verifyIsNull(); 4 Object o = get(key); 5 if (o != null) 6 { 7 return o.toString(); 8 } 9 throw new JSON

Caffe学习系列(8):solver优化方法

上文提到,到目前为止,caffe总共提供了六种优化方法: Stochastic Gradient Descent (type: "SGD"), AdaDelta (type: "AdaDelta"), Adaptive Gradient (type: "AdaGrad"), Adam (type: "Adam"), Nesterov’s Accelerated Gradient (type: "Nesterov&qu

json学习系列(8)JSON与JAVA数据的相互转换实例

一.完整案例 先定义一个java实体对象,如下: package com.pcitc.json.cnblog; /** * SimInfo实体对象 * * @Description * @author admin * @created 2015年6月30日 上午10:23:21 * @version * @history * @see */ public class SimInfo { private String addTime; private String iccid; private i