生成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()); }
}

测试结果如下所示:

aaarticlea/png;base64,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" alt="" />

接下来从源码层次分析一下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;
}

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

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

  1. json教程系列(2)-生成JSONObject的方法

    生成JSONObject一般有两种方式,通过javabean或者map类型来生成.如下面的例子:   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2 ...

  2. (2)-生成JSONObject的方法

    生成JSONObject一般有两种方式,通过javabean或者map类型来生成.如下面的例子:   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2 ...

  3. Netty源码学习系列之4-ServerBootstrap的bind方法

    前言 今天研究ServerBootstrap的bind方法,该方法可以说是netty的重中之重.核心中的核心.前两节的NioEventLoopGroup和ServerBootstrap的初始化就是为b ...

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

    8:47 2015/7/11 昨天晚上在使用JSON时,在创建JSONObject对象的时候不报错也不抛出异常.但就是new 不出来JSONObject的对象,这是一个非常奇葩的现象. 最后才发现原来 ...

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

    我们通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值.例如下面的实体类: package com.pcitc.json; /** * Person实体类 * * @Des ...

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

    我一直觉得JSONObject和JSONArray是JDK集合部分的延伸,它们与JDK的List和Map一脉相承.通过研究JSONObject和JSONArray的结构,我们顺便也复习一下JDK的内容 ...

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

    在JSONObject获取value有多种方法,如果使用 getXxx()类型的方法获取value,如getString("key").如果key不存在的话,这些方法无一例外的都会 ...

  8. 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 这种错误非常常见, ...

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

    上文提到,到目前为止,caffe总共提供了六种优化方法: Stochastic Gradient Descent (type: "SGD"), AdaDelta (type: &q ...

随机推荐

  1. 物理学家的LOGO

    原文选自Inside the Perimeter 阿那克西曼德(c. 610-546 BCE) 古希腊人,被认为是史上第一位物理学家,是有记录的认为世界按一定规律运行的第一人,做科学实验第一人,发明了 ...

  2. Ubuntu下编译SuiteSparse-4.4.1和METIS-4.0.3

    网上关于编译的介绍非常多,其实ubuntu系统自带编译好的SuiteSparse,不想折腾的话,用新立得很容易就搞定 准备工作: 下载并编译OpenBLAS(会连带Lapack也下载和编译),图省事请 ...

  3. Java并发编程笔记—基础知识—实用案例

    如何正确停止一个线程 1)共享变量的使用 中断线程最好的,最受推荐的方式是,使用共享变量(shared variable)发出信号,告诉线程必须停止正在运行的任务.线程必须周期性的核查这一变量(尤其在 ...

  4. ListView异步加载网络图片完美版之双缓存技术

    本示例参考学习了一个国外的示例:http://code.google.com/p/android-imagedownloader/,有兴趣的同学下载研究一下. 问题描述:在这一篇博客中将会为大家讲解如 ...

  5. [codeforces 528]A. Glass Carving

    [codeforces 528]A. Glass Carving 试题描述 Leonid wants to become a glass carver (the person who creates ...

  6. typedef 各类定义,各类问题大全

    第一篇:typedef struct与struct的区别 1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数据类型(int,char等)和自定 ...

  7. HDOJ 2546饭卡(01背包问题)

    http://acm.hdu.edu.cn/showproblem.php?pid=2546 Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如 ...

  8. Git SSH Key 生成步骤

    it是分布式的代码管理工具,远程的代码管理是基于ssh的,所以要使用远程的git则需要ssh的配置. github的ssh配置如下: 一 . 设置git的user name和email: $ git ...

  9. 怎样取出cobbler kopts中设置的参数?

    Is there a way to find out with what parameters did the kernel boot? For example if I specify noexec ...

  10. IOC原理解释

    spring ioc它其实是一种降低对象耦合关系的设计思想,通常来说,我们在一个类调用另一个类的方法的时候,需要不断的new新的对象来调用该方法,类与类之间耦合度比较高,有了ioc容器以后,ico容器 ...