FastJson的常用操作

2017-06-05

常用操作包括以下内容:

  1. 对象与(JsonObject或JsonArray)与String的互换
  2. String转换为(JsonObject或JsonArray)如何保持顺序
  3. Eval的使用
  4. 值为null的(JsonObject或JsonArray)转换为String时如何保存

代码:

package Demo.Sample1;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONPath;
import com.alibaba.fastjson.parser.Feature;
import com.alibaba.fastjson.serializer.SerializerFeature; public class Sample { public static void main(String[] args) { Group group = GenerateGroup();
String ss="{\"id\":1.1,\"name\":\"admin\",\"users\":[{\"id\":2.2,\"name\":\"guest\"},{\"id\":3.3,\"name\":\"root\"}]}";
Group groupWithNull=GenerateGroupWithNull(); BasicObjectToStringCompare();
JsonObjectToStringCompare(ss);
NJsonObjectToStringCompare(group);
JsonStringSequence(group, ss);
JsonEval(ss,"$.users");
DealWithNullToStringString(groupWithNull);
} public static void BasicObjectToStringCompare()
{
System.out.println("---------- 基元类型 toString() toJSONString() 比较: ----------");
System.out.println("ZifuChuan");
System.out.println(JSON.toJSONString("ZifuChuan"));
System.out.println(true);
System.out.println(JSON.toJSONString(true));
System.out.println(1.1);
System.out.println(JSON.toJSONString(1.1));
} public static String NJsonObjectToStringCompare(Group group) {
String jsonString = JSON.toJSONString(group);
System.out.println("---------- 非JsonObject toString() toJSONString() 比较: ----------");
System.out.println(group.toString());
System.out.println(JSON.toJSONString(group));
return jsonString;
} public static String JsonObjectToStringCompare(String ss) {
Object o=JSON.parse(ss,Feature.OrderedField);
System.out.println("---------- JsonObject toString() toJSONString() 比较: ----------");
System.out.println(o.toString());
System.out.println(JSON.toJSONString(o));
return ss;
} public static void JsonStringSequence(Group group, String jsonString) {
System.out.println("---------- 是否有序: ----------");
Object o=JSON.parse(jsonString);
System.out.println(o.toString());; Object o1=JSON.parse(jsonString,Feature.OrderedField);
System.out.println(o1.toString()); Object o2 = JSON.toJSON(group);
System.out.println(o2.toString());
} public static void JsonEval(String ss,String jsonPath) {
System.out.println("---------- Json Eval: ----------");
Object o3=JSONPath.eval(JSON.parse(ss,Feature.OrderedField),jsonPath);
System.out.println(o3.toString());
} public static void DealWithNullToStringString(Group groupWithNull) {
System.out.println("---------- JsonObject with null emlement: ----------");
System.out.println(JSON.toJSONString(groupWithNull));
System.out.println(JSON.toJSONString(groupWithNull,SerializerFeature.WriteMapNullValue));
} private static Group GenerateGroup() {
Group group = new Group();
group.setId(1.1);
group.setName("admin"); User guestUser = new User();
guestUser.setId(2.2);
guestUser.setName("guest"); User rootUser = new User();
rootUser.setId(3.3);
rootUser.setName("root"); group.addUser(guestUser);
group.addUser(rootUser);
return group;
} private static Group GenerateGroupWithNull() {
Group group = new Group();
group.setId(1.1);
group.setName(""); User guestUser1 = new User();
guestUser1.setId(null);
guestUser1.setName("guest"); User guestUser2 = new User();
guestUser2.setId(3.3); User guestUser3 = new User(); group.addUser(guestUser1);
group.addUser(guestUser2);
group.addUser(guestUser3);
return group;
}
}

结果:

---------- 基元类型 toString() toJSONString() 比较: ----------
ZifuChuan
"ZifuChuan"
true
true
1.1
1.1
---------- JsonObject toString() toJSONString() 比较: ----------
{"id":1.1,"name":"admin","users":[{"id":2.2,"name":"guest"},{"id":3.3,"name":"root"}]}
{"id":1.1,"name":"admin","users":[{"id":2.2,"name":"guest"},{"id":3.3,"name":"root"}]}
---------- 非JsonObject toString() toJSONString() 比较: ----------
Demo.Sample1.Group@23ab930d
{"id":1.1,"name":"admin","users":[{"id":2.2,"name":"guest"},{"id":3.3,"name":"root"}]}
---------- 是否有序: ----------
{"name":"admin","id":1.1,"users":[{"name":"guest","id":2.2},{"name":"root","id":3.3}]}
{"id":1.1,"name":"admin","users":[{"id":2.2,"name":"guest"},{"id":3.3,"name":"root"}]}
{"name":"admin","id":1.1,"users":[{"name":"guest","id":2.2},{"name":"root","id":3.3}]}
---------- Json Eval: ----------
[{"id":2.2,"name":"guest"},{"id":3.3,"name":"root"}]
---------- JsonObject with null emlement: ----------
{"id":1.1,"name":"","users":[{"name":"guest"},{"id":3.3},{}]}
{"id":1.1,"name":"","users":[{"id":null,"name":"guest"},{"id":3.3,"name":null},{"id":null,"name":null}]}

参考:

[1] Introducing JSON

[2] FastJson 教程

FastJson的常用操作的更多相关文章

  1. 【三】用Markdown写blog的常用操作

    本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdown+ ...

  2. php模拟数据库常用操作效果

    test.php <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); ...

  3. Mac OS X常用操作入门指南

    前两天入手一个Macbook air,在装软件过程中摸索了一些基本操作,现就常用操作进行总结, 1关于触控板: 按下(不区分左右)            =鼠标左键 control+按下        ...

  4. mysql常用操作语句

    mysql常用操作语句 1.mysql -u root -p   2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...

  5. nodejs配置及cmd常用操作

    一.cmd常用操作 1.返回根目录cd\ 2.返回上层目录cd .. 3.查找当前目录下的所有文件dir 4.查找下层目录cd window 二.nodejs配置 Node.js安装包及源码下载地址为 ...

  6. Oracle常用操作——创建表空间、临时表空间、创建表分区、创建索引、锁表处理

    摘要:Oracle数据库的库表常用操作:创建与添加表空间.临时表空间.创建表分区.创建索引.锁表处理 1.表空间 ■  详细查看表空间使用状况,包括总大小,使用空间,使用率,剩余空间 --详细查看表空 ...

  7. python 异常处理、文件常用操作

    异常处理 http://www.jb51.net/article/95033.htm 文件常用操作 http://www.jb51.net/article/92946.htm

  8. byte数据的常用操作函数[转发]

    /// <summary> /// 本类提供了对byte数据的常用操作函数 /// </summary> public class ByteUtil { ','A','B',' ...

  9. Linux Shell数组常用操作详解

    Linux Shell数组常用操作详解 1数组定义: declare -a 数组名 数组名=(元素1 元素2 元素3 ) declare -a array array=( ) 数组用小括号括起,数组元 ...

随机推荐

  1. Java获取函数参数名称

    原理 编译之后的class文件默认是不带有参数名称信息的,使用 IDE 时,反编译jar包得到的源代码函数参数名称是 arg0,arg1......这种形式,这是因为编译 jar 包的时候没有把符号表 ...

  2. Debug 路漫漫-01

    运行到子函数时提示报错:  === 这个断点一步步debug下来是顺利的,但是咋就超出数组范围了呢,这会是什么问题. ——sess肯定超过索引了,那个sess(:,2)的值肯定超过V的行数了. ——由 ...

  3. mysql/mariadb基于ssl的主从复制

    当mysql/mariadb跨越互联网进行复制时别人可以窃取到mysql/mariadb的复制信息, 这些信息是明文的, 因此存在不安全性, 这里通过ssl对复制的信息进行加密 1. 创建证书中心 在 ...

  4. 树莓派进阶之路 (034) - 基于linux的ftp脚本

    基于linux的ftp脚本: #!/bin/sh cd echo "彻底卸载原有的ftp" sudo apt-get remove --purge vsftpd #(--purge ...

  5. magento 为用户注册增加一个字段(转)

    步骤 I. 加一个occupation/title字段到用户注册页,差不多在register.html的54行,在email下方加一个Occupation显示代码 代码: <li>< ...

  6. Tomcat7并发和线程数

    最近一直在解决线上一个问题,表现是: Tomcat每到凌晨会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s. 服务器性能很好,Tomcat版本是 ...

  7. Nginx https证书部署

    1 获取证书 Nginx文件夹内获得SSL证书文件 1_www.domain.com_bundle.crt 和私钥文件 2_www.domain.com.key,1_www.domain.com_bu ...

  8. C# 连接 mySQL 出现 GUID 应包含带 4 个短划线的 32 位数 问题

    C# 连接 mySQL 出现 GUID 应包含带 4 个短划线的 32 位数 问题 在连接字符串中加入 Old Guids=true; 如:server=localhost;userid=root;p ...

  9. 【转】Braid - 一个发人深思的游戏

    Braid - 一个发人深思的游戏 我已经很久很久没有打游戏了(如果不算 Angry Birds 之类用来打发时间的游戏的话).我的最后一个真正意义上的游戏机,是 PlayStation 1.在那上面 ...

  10. iOS UILabel设置居上对齐,居中对齐,居下对齐

    在iOS中默认的UILabel中的文字在竖直方向上仅仅能居中对齐,博主參考国外站点.从UILabel继承了一个新类,实现了居上对齐,居中对齐,居下对齐.详细例如以下: // //  myUILabel ...