生成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 username)
    {
      this.username = username;
    }
    public String getPassword()
    {
       return password;
    }
    public void setPassword(String password)
    {
       this.password = password;
    }
}

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.HashMap;
import net.sf.json.JSONObject;
public class Test {
 
public static void main(String args[]) {
    
    User user = new User();
    user.setUsername("root");
    user.setPassword("1234");
    JSONObject json1 = JSONObject.fromObject(user);
    System.out.println(json1.toString());
    HashMap<Object,Object> userMap= new HashMap<Object,Object>();
    userMap.put("username", "root");
    userMap.put("password", "1234");
    JSONObject json2 = JSONObject.fromObject(userMap);
    System.out.println(json2.toString());
    
}
}

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

 
1
2
3
4
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对象。

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

JSONObject的构造函数有两个:

 
1
2
3
4
5
6
7
8
9
public JSONObject()
{
        this.properties = new ListOrderedMap();
}
public JSONObject(boolean isNull)
{
        this();
        this.nullObject = isNull;
}

不过,说实话,第二个构造函数使用情况很少。

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

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

    在JSONObject获取value有多种方法,如果key不存在的话,这些方法无一例外的都会抛出异常.如果在线环境抛出异常,就会使出现error页面,影响用户体验,针对这种情况最好是使用optXXX方 ...

  2. json学习系列(2)-生成JSONObject的方法

    生成JSONObject一般有两种方式,通过javabean或者map类型来生成.如下面的例子: 先定义一个User实体类: package com.pcitc.json; /** * 用户实体类 * ...

  3. (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 ...

  4. json教程系列(1)-使用json所要用到的jar包下载

    json是个非常重要的数据结构,在web开发中应用十分广泛.我觉得每个人都应该好好的去研究一下json的底层实现,基于这样的认识,金丝燕网推出了一个关于json的系列教程,分析一下json的相关内容, ...

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

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

  6. json教程系列(3)-JSONObject的过滤设置

    我们通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值.例如下面的类:   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  7. 微软Connect教程系列--自动生成增删改查页面工具介绍(二)

    本章课程描述了vs2015的三个特点,其中主要将描述在vs2015下面,使用命令自动生成增删改查界面,具体如下: 1.web.config文件不在存在,用config.json替代,以适应支撑vs的插 ...

  8. Json.Net系列教程 2.Net类型与JSON的映射关系

    原文 Json.Net系列教程 2.Net类型与JSON的映射关系 首先谢谢大家的支持和关注.本章主要介绍.Net类型与JSON是如何映射的.我们知道JSON中类型基本上有三种:值类型,数组和对象.而 ...

  9. Json.Net系列教程 4.Linq To JSON

    原文 Json.Net系列教程 4.Linq To JSON 更改历史 2013-05-31 添加一个FAQ   一.Linq to JSON是用来干什么的? Linq to JSON是用来操作JSO ...

随机推荐

  1. 读写文件,用代码在讲html文件转为jsp文件

    package my.testguava; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputSt ...

  2. mysql 索引优化,索引建立原则和不走索引的原因

    第一:选择唯一性索引 唯一性索引的值是唯一的,可以更快捷的通过该索引来确定某条记录. 2.索引的列为where 后面经常作为条件的字段建立索引 如果某个字段经常作为查询条件,而且又有较少的重复列或者是 ...

  3. 第一百七十六节,jQuery,插件

    jQuery,插件 学习要点: 1.插件概述 2.验证插件 3.自动完成插件 4.自定义插件 插件(Plugin)也成为 jQuery 扩展(Extension),是一种遵循一定规范的应用程序接口编 ...

  4. 注册通用验证用户filter

    /// <summary> /// Mvc注册全局Filter /// </summary> public class FilterConfig { /// <summa ...

  5. json responseJson

    private void doResoponseJson(HttpServletResponse resp,String jsonString){ Trace.logError(Trace.COMPO ...

  6. 【转发】linux开发人员常用命令

    每个开发人员到了他们职业人生的某个阶段的时候,将会发现自己要寻找有关Linux的信息.我并不是这方面的专家.但是掌握了以下8个命令,我几乎可以得到我任何需要的东西. 注意:以下的命令都有很多扩展的文档 ...

  7. MySQL索引使用:字段为varchar类型时,条件要使用''包起来

    结论: 当MySQL中字段为int类型时,搜索条件where num='111' 与where num=111都可以使用该字段的索引.当MySQL中字段为varchar类型时,搜索条件where nu ...

  8. 【BZOJ2555】SubString 后缀自动机+LCT

    [BZOJ2555]SubString Description 懒得写背景了,给你一个字符串init,要求你支持两个操作         (1):在当前字符串的后面插入一个字符串         (2 ...

  9. 解决一个项目里面加载两个同名不同版本的DLL的问题

    在config里面这样配置,可以加载不同版本的dll <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com ...

  10. Oracle 物理体系

    Oracle  物理体系 Oracle 物理体系 问题 参考资料   Oracle 物理体系       PGA:program global area ,私有不共享内存. PGA起到预处理的作用: ...