FastJson中JSONObject用法及常用方法总结
本文为博主原创,未经允许不得转载:
最近一直有用到解析各种数据,主要是用FastJson进行数据解析,其中一个重要的类为JSONObject,今天有时间,所以进行总结一下:
JSONobject是FastJson提供的对象,在api中是用一个私有的常量map进行封装的,实际就是一个map,只不过FastJson对其进行了封装,
添加了很多方便快捷的属性方法。
private final Map<String, Object> map;
在项目中添加maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.48</version>
</dependency>
先来看下它有哪些常用方法,以及有什么作用:
1.put(String key, Object value)方法,在JSONObject对象中设置键值对在,在进行设值得时候,key是唯一的,如果用相同的key不断设值得时候,保留后面的值。
2.Object get(String key) :根据key值获取JSONObject对象中对应的value值,获取到的值是Object类型,需要手动转化为需要的数据类型
3.int size():获取JSONObject对象中键值对的数量
4.boolean isEmpty():判断该JSONObject对象是否为空
5.containsKey(Object key):判断是否有需要的key值
6.boolean containsValue(Object value):判断是否有需要的value值
7.JSONObject getJSONObject(String key):如果JSONObjct对象中的value是一个JSONObject对象,即根据key获取对应的JSONObject对象;
8.JSONArray getJSONArray(String key) :如果JSONObject对象中的value是一个JSONObject数组,既根据key获取对应的JSONObject数组;
9.Object remove(Object key):根据key清除某一个键值对。
由于JSONObject是一个map,它还具有map特有的两个方法:
10.Set<String> keySet() :获取JSONObject中的key,并将其放入Set集合中
11.Set<Map.Entry<String, Object>> entrySet():在循环遍历时使用,取得是键和值的映射关系,Entry就是Map接口中的内部接口
与String字符串转换:
12.toJSONString() /toString():将JSONObject对象转换为json的字符串
常用的方法主要为以上这些,下面列出使用这些方法的example:
public static void main(String[] args) {
//新建JSONObject对象
JSONObject object1 = new JSONObject();
//1.在JSONObject对象中放入键值对
object1.put("name", "张三");
object1.put("name1", "张三1");
object1.put("name2", "张三2");
//2.根据key获取value
String name = (String) object1.get("name");
System.out.println(name);
//3.获取JSONObject中的键值对个数
int size = object1.size();
System.out.println(size);
//4.判断是否为空
boolean result = object1.isEmpty();
System.out.println(result);
//5.是否包含对应的key值,包含返回true,不包含返回false
boolean isContainsKeyResult = object1.containsKey("name");
System.out.println(isContainsKeyResult);
//6.是否包含对应的value值,包含返回true,不包含返回false
boolean isContainsValueResult = object1.containsValue("王五");
System.out.println(isContainsValueResult);
//7.JSONObjct对象中的value是一个JSONObject对象,即根据key获取对应的JSONObject对象;
JSONObject object2 = new JSONObject();
//将jsonobject对象作为value进行设置
object2.put("student1", object1);
JSONObject student =object2.getJSONObject("student1");
System.out.println(student);
//8.如果JSONObject对象中的value是一个JSONObject数组,既根据key获取对应的JSONObject数组;
JSONObject objectArray = new JSONObject();
//创建JSONArray数组
JSONArray jsonArray = new JSONArray();
//在JSONArray数组设值:jsonArray.add(int index, Object value);
jsonArray.add(0, "this is a jsonArray value");
jsonArray.add(1, "another jsonArray value");
objectArray.put("testArray", jsonArray);
//获取JSONObject对象中的JSONArray数组
JSONArray jsonArray2 = objectArray.getJSONArray("testArray");
System.out.println(jsonArray2);
//9.remove.根据key移除JSONObject对象中的某个键值对
object1.remove("name");
System.out.println(object1);
//10.取得JSONObject对象中key的集合
Set<String> keySet= object1.keySet();
for (String key : keySet) {
System.out.print(" "+key);
}
System.out.println();
//11.取得JSONObject对象中的键和值的映射关系
Set<Map.Entry<String, Object>> entrySet = object1.entrySet();
for (Entry<String, Object> entry : entrySet) {
System.out.println(entry);
}
//12.转换为json字符串
String str1 = object1.toJSONString();
System.out.println(str1);
String str2 =object1.toString();
System.out.println(str2);
}
运行以上程序的结果为:

最近感悟(不喜勿喷):
越长大越理解得别人的不容易,也发现自己更多的无奈和不容易,有很多想去照顾的人,想去做的事,却发现自己的能力只能承担起一丁点。想家了
FastJson中JSONObject用法及常用方法总结的更多相关文章
- [fastjson] - fastjson中 JSONObject 和 JSONArray
/** * 对jsonObject对象进行key的获取 * @param jsonObject */ public ArrayList<String> jsonKeyRecursion(J ...
- JAVA中使用alibaba fastjson实现JSONObject、Object、Json字符串的转换
JAVA中使用alibaba fastjson实现JSONObject.Object.Json字符串的转换 Object转JSON字符串:String jsonStr = JSONObject.toJ ...
- .NET3.5中JSON用法以及封装JsonUtils工具类
.NET3.5中JSON用法以及封装JsonUtils工具类 我们讲到JSON的简单使用,现在我们来研究如何进行封装微软提供的JSON基类,达到更加方便.简单.强大且重用性高的效果. 首先创建一个类 ...
- FastJson中@JSONField注解使用
最近做项目中,使用了json格式在服务器之间进行数据传输.但是发现json格式数据不符合JAVA中的变量定义规则,并且难以理解,因此需要在后台中做二次处理,将数据处理成我们系统中定义的格式. 思路: ...
- PHP中字符串比较的常用方法
PHP中字符串比较的常用方法 一.总结 1.其实应该是直接等于号就可以了的 2.也可用strcmp,注意返回值 二.PHP中字符串比较的常用方法 1.按字节比较 按字节比较字符串是最常用的方法.其中可 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- 前端开发:Javascript中的数组,常用方法解析
前端开发:Javascript中的数组,常用方法解析 前言 Array是Javascript构成的一个重要的部分,它可以用来存储字符串.对象.函数.Number,它是非常强大的.因此深入了解Array ...
- ORACLE 中ROWNUM用法总结(转)
ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<.<=.!=) ...
- AngularJS select中ngOptions用法详解
AngularJS select中ngOptions用法详解 一.用法 ngOption针对不同类型的数据源有不同的用法,主要体现在数组和对象上. 数组: label for value in a ...
随机推荐
- centos7邮件服务器SSL配置
在上篇文章centos7搭建postfix邮件服务器的搭建中我们没有配置SSL,接下来我们在这篇文章中讲讲centos7邮件服务器SSL配置. 1. 创建SSL证书 [root@www ~]# cd ...
- Linux提权:从入门到放弃
*原创作者:piece of the past,本文属Freebuf原创奖励计划,未经许可禁止转载 日站就要日个彻底.往往我们能拿下服务器的web服务,却被更新地比西方记者还快的管理员把内网渗透的种子 ...
- ThreadPool study
线程池浅析 线程池顾名思义就是放线程的池子 Thread Pool. 那么为什么要有线程池呢?有些时候系统需要处理非常多的执行时间很短的请求,如果每一个请求都开启一个新的线程,则系统创建销毁线程的开销 ...
- 小程序里let和var以及const区别
在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. [JavaScript] 纯文 ...
- vue2.0 源码解读(一)
又看完一遍中文社区的教程接下来开始做vue2.0的源码解读了! 注:解读源码时一定要配合vue2.0的生命周期和API文档一起看 vue2.0的生命周期分为4主要个过程 create. 创建---实例 ...
- Python3.6 性能测试框架Locust的搭建与使用
背景 Python3.6 性能测试框架Locust的搭建与使用 基础 python版本:python3.6 方法一: pip install locustio 方法二: 开发工具:pycharm 使用 ...
- day16:内置函数二
1,大作业,yield 返回之后可以对数据进行处理了就,注意函数的解耦,每一个小功能写成一个函数,增强可读性,写之前自己要先把整体功能分块,先做什么,在做什么 # 现在需要对这个员工信息文件进行增删改 ...
- jsp (二) 练习
package cn.sasa.serv; import java.io.IOException; import java.sql.SQLException; import java.util.Lis ...
- Unable to convert MySQL date/time value to System.DateTime问题解决方案
原因:可能是该字段(date/datetime)的值默认缺省值为:0000-00-00/0000-00-00 00:00:00,这样的数据读出来转换成System.DateTime时就会有问题: 解决 ...
- 实验二《Java面向对象程序设计》的一点说明
实验二<Java面向对象程序设计>的一点说明 本周的实验要求是: 完成实验二<Java面向对象程序设计>中的内容 其中Eclipse相关的内容参考Intellj IDEA 简易 ...