alibaba 实体转json_com.alibaba.fastjson 转换List Map等对象

原文:http://www.cnblogs.com/goody9807/p/4244862.html

本文讲解2点:

1. fastjson生成和解析json数据

(举例:4种常用类型:JavaBean,List,List,List)

2.通过一个android程序测试fastjson的用法。

fastjson简介:

Fastjson是一个Java语言编写的高性能功能完善的JSON库。fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持JDK 5、JDK 6、Android、阿里云手机等环境。

一. fastjson生成json字符串(JavaBean,List,List,List)

String jsonStrng = JSON.toJSONString(object);

二. fastjson 解析json字符串为四种类型

1. JavaBean

Person person = JSON.parseObject(jsonString, Person.class);

2. List

List listPerson =JSON.parseArray(jsonString, Person.class);

3. List

List listString = JSON.parseArray(jsonString, String.class);

4. List>

List> listMap = JSON.parseObject(jsonString, new TypeReference>>(){});  (注意:此处可看出fastjson反射机制比gson更准确, id = 1001 通过fastjson反射仍是 id = 1001 , 而通过gson反射结果 为 id =1001.0 ,

JSON解析器fastjson(阿里巴巴出品,版本1.1.26),如果定义了JSONObject为{“JACKIE_ZHANG”:”张学友”,”ANDY_LAU”:”刘德华”,”LIMING”:”黎明”,”Aaron_Kwok”:”郭富城”},那么读取值时,KEY顺序无序,测试代码:

import com.alibaba.fastjson.JSONObject;

/**

* Created by wangzhenfei on 14-4-15.

*/

public class FastJsonTest {

public static void main(String[] args){

String jsonStr = “{\”JACKIE_ZHANG\”:\”张学友\”,\”ANDY_LAU\”:\”刘德华\”,\”LIMING\”:\”黎明\”,\”Aaron_Kwok\”:\”郭富城\”}” ;

//做5次测试

for(int i=0,j=5;i

{

JSONObject jsonObject = JSONObject.parseObject(jsonStr) ;

for(java.util.Map.Entry entry:jsonObject.entrySet()){

System.out.print(entry.getKey()+”-“+entry.getValue()+”\t”);

}

System.out.println();//用来换行

}

}

}

CODE_ico.png

ico_fork.svg

LIMING-黎明 Aaron_Kwok-郭富城JACKIE_ZHANG-张学友ANDY_LAU-刘德华

Aaron_Kwok-郭富城 ANDY_LAU-刘德华LIMING-黎明JACKIE_ZHANG-张学友

Aaron_Kwok-郭富城 JACKIE_ZHANG-张学友ANDY_LAU-刘德华LIMING-黎明

LIMING-黎明 ANDY_LAU-刘德华JACKIE_ZHANG-张学友Aaron_Kwok-郭富城

JACKIE_ZHANG-张学友 LIMING-黎明ANDY_LAU-刘德华Aaron_Kwok-郭富城

解决办法:定义为JSONArray,代码如下:

import com.alibaba.fastjson.JSONArray;

/**

* Created by wangzhenfei on 14-4-15.

*/

public class FastJsonTest {

public static void main(String[] args){

String jsonStr = “[{\”JACKIE_ZHANG\”:\”张学友\”},{\”ANDY_LAU\”:\”刘德华\”},{\”LIMING\”:\”黎明\”},{\”Aaron_Kwok\”:\”郭富城\”}]” ;

//做5次测试

for(int i=0,j=5;i

{

JSONArray jsonArray = JSONArray.parseArray(jsonStr);

for(int k=0;k

System.out.print(jsonArray.get(k) + “\t”);

}

System.out.println();//用来换行

}

}

}

运行结果为:[plain]

{“JACKIE_ZHANG”:”张学友”} {“ANDY_LAU”:”刘德华”}{“LIMING”:”黎明”}{“Aaron_Kwok”:”郭富城”}

{“JACKIE_ZHANG”:”张学友”} {“ANDY_LAU”:”刘德华”}{“LIMING”:”黎明”}{“Aaron_Kwok”:”郭富城”}

{“JACKIE_ZHANG”:”张学友”} {“ANDY_LAU”:”刘德华”}{“LIMING”:”黎明”}{“Aaron_Kwok”:”郭富城”}

{“JACKIE_ZHANG”:”张学友”} {“ANDY_LAU”:”刘德华”}{“LIMING”:”黎明”}{“Aaron_Kwok”:”郭富城”}

{“JACKIE_ZHANG”:”张学友”} {“ANDY_LAU”:”刘德华”}{“LIMING”:”黎明”}{“Aaron_Kwok”:”郭富城”}

如果就想要定义为JSONObject,而不是JSONArray,可以选用其他JSON解析器,个人推荐使用google的gson,文档明显比fastjson好很多(从这里可以看出阿里巴巴和谷歌的差距):[java]

import com.google.gson.JsonElement;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

/**

* Created by wangzhenfei on 14-4-15.

*/

public class FastJsonTest {

public static void main(String[] args){

String jsonStr = “{\”JACKIE_ZHANG\”:\”张学友\”,\”ANDY_LAU\”:\”刘德华\”,\”LIMING\”:\”黎明\”,\”Aaron_Kwok\”:\”郭富城\”}” ;

//做5次测试

for(int i=0,j=5;i

{

JsonObject jsonObject = (JsonObject) new JsonParser().parse(jsonStr);

for(java.util.Map.Entry entry:jsonObject.entrySet()){

System.out.print(entry.getKey()+”-“+entry.getValue()+”\t”);

}

System.out.println();//用来换行

}

}

}

运行结果:[plain]

JACKIE_ZHANG-“张学友”  ANDY_LAU-“刘德华”  LIMING-“黎明” Aaron_Kwok-“郭富城”

JACKIE_ZHANG-“张学友”  ANDY_LAU-“刘德华”  LIMING-“黎明” Aaron_Kwok-“郭富城”

JACKIE_ZHANG-“张学友”  ANDY_LAU-“刘德华”  LIMING-“黎明” Aaron_Kwok-“郭富城”

JACKIE_ZHANG-“张学友”  ANDY_LAU-“刘德华”  LIMING-“黎明” Aaron_Kwok-“郭富城”

JACKIE_ZHANG-“张学友”  ANDY_LAU-“刘德华”  LIMING-“黎明” Aaron_Kwok-“郭富城”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/526861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos mysql rpm re_centos7和centos6.5环境rpm方式安装mysql5.7和mysql5.6详解

centos环境安装mysql5.7其实不建议安装mysql5.7 语法和配置可能和以前的版本区别较大,多坑,慎入1.yum方式安装(不推荐)a.安装mysql5.7 yum源centos6:wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpmyum localinstall mysql-community-…

mysql galera haproxy_安装配置Haproxy代理MySQL Galera集群

这篇文章,我讲介绍如何为MariaDB Galera 集群添加负载均衡,大致步骤如下:确认所有Galera节点作为一个单一集群运行(所有节点都是主节点而且相互同步)安装Haproxy(你可以安装到独立的服务器或者应用服务器)配置集群监控检测脚本,用…

nvme固态硬盘开机慢_为何我使用了固态硬盘开机速度还是需要20-30秒

1、加速网上邻居在Windows XP中访问网上邻居是相当恼人的,系统会搜索自己的共享目录和可作为网络共享的打印机以及计划任务中和网络相关的计划任务,然后才显示出来,显然这样速度就会比Windows 9x中慢很多。其实这些功能我们并没有使用上&…

高性能mysql看不懂_高性能mysql笔记1

转载请注明&#xff1a;TheViper http://www.cnblogs.com/TheViper<>这本书写的真的很好&#xff0c;只可惜本屌不才&#xff0c;大部分都看不懂&#xff0c;暂且记下与mysql优化有关&#xff0c;对自己有用的东西。测试指标吞吐量吞吐量指的是单位时间内的事务处理数&am…

python 热词分析_Python笔记:热词分析2020-01-01

热词分析在公众趋势分析、舆情分析有很宽广的应用&#xff0c;我们来看看怎么从一个TXT文件中分析出文章的热词出来&#xff0c;我们采用流行的第三方“结巴”包来实现。首先安装第三方包(matplotlib&#xff0c;jieba&#xff0c;wordcloud&#xff0c;numpy)mmatplotlib主要来…

子进程会继承父进程的哪些内容_【学习教程】Node.js创建子进程方法

来源 | https://github.com/CommanderXL/biu-blog/issues/25exec其中exec可用于在指定的shell当中执行命令。不同参数间使用空格隔开&#xff0c;可用于复杂的命令。const { exec } require(child_process)exec(cat *.js bad_file | wc -l)exec方法用于异步创建一个新的子进程…

python元编程运用_Python 中的元编程

就像元数据是有关数据的数据一样&#xff0c;元编程就是编写用于操纵程序的某些程序。人们普遍认为&#xff0c;元程序就是生成其他程序的某些程序&#xff0c;但范式更加广泛。所有旨在自我读取、分析、转换或修改的程序都是元编程的范例。例如&#xff1a;领域特定语言 (DSL)…

wamp怎么安装mysql服务器_用wamp的mysq安装pythonmysql

(我不确定这是应该在这里问还是在苏。。但是看到this question就这样&#xff0c;我在这里要求它…)我在我的vista机器上安装了wamp(mysql-5.1.33)服务器&#xff0c;我正试图安装pythonmysql 1.2.3c1&#xff0c;以使用wamp提供的mysql版本。在起初&#xff0c;当我运行python…

mysql筛选两个表有相同项的数据库_用SQL查询两个表中相同的数据

展开全部 1、创建测试表; create table test_col_1(id number, var varchar2(200)); create table test_col_2(id number, var varchar2(200)); 2、插入测试数据, insert into test_col_1 select level*8, var||32313133353236313431303231363533e59b9ee7ad9431333431373839l…

MySQL建表添加乐观锁字段_Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化...

Java秒杀系统优化-Redis缓存-分布式session-RabbitMQ异步下单-页面静态化项目介绍基于SpringBootMybatis搭建的秒杀系统&#xff0c;并且针对高并发场景进行了优化&#xff0c;保证线程安全的同时极大地提高了服务器的吞吐量&#xff0c;主要优化手段有页面静态化、Redis缓存(页…

叶金荣mysql教程_mysql优化--叶金荣老师讲座笔记

copy to tmp table执行ALTER TABLE修改表结构时建议&#xff1a;凌晨执行Copying to tmp table拷贝数据到内存中的临时表&#xff0c;常见于GROUP BY操作时建议&#xff1a;创建索引Copying to tmp table on disk临时结果集太大&#xff0c;内存中放不下&#xff0c;需要将内存…

mysql tpcc 测试结果分析_mysql 数据库TPCC测试

创建数据库tpcc&#xff0c;导入测试表格mysql -h 192.168.0.202 -P15002 -utest -ptest -e "drop database tpcc;"mysql -h 192.168.0.202 -P15002 -utest -ptest -e "create database tpcc;"mysql -h192.168.0.202 -P15002 -utest -ptest --databasetpcc…

mysql 变量生命周期_Go: 延长变量的生命周期

![Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French.](https://raw.githubusercontent.com/studygolang/gctt-images2/master/20191002-Go-Keeping-a-Variable-Alive/00.png)本文基于 Go 1.13。在 Go 中&#xff0…

python qqbot实现qq聊天机器人_Python QQBot库的QQ聊天机器人

本文实例为大家分享了Python QQBot库的QQ聊天机器人的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下1.安装pip install qqbot2.主动发出消息from qqbot import _bot as bot# 登录QQbot.Login([-q, 2816626661])buddy 获取指定名称/备注的好友group 获取群buddy bot…

tp5 mysql实现消息队列_TP5系列 | Queue消息队列

消费信息如下ThinkPHP5 Queue消息队列优点1、Queue内置了 Redis&#xff0c;Database&#xff0c;Topthink &#xff0c;Sync这四种驱动&#xff0c;本文使用Redis驱动2、Queue消息队列适用于大并发或者返回结果 时间有点长并需要批量操作的第三方接口&#xff0c;可用于短信发…

mysql表里插不进去数据_Oracle数据中表值插不进去问题(转)

相信我们在进行测试的时候&#xff0c;有的时候会遇上数据库表的值插不进去的情况&#xff0c;在执行&#xff33;&#xff31;&#xff2c;语句的时候&#xff0c;好像卡住一样&#xff0c;没有反应。但是当你把&#xff33;&#xff31;&#xff2c;语句&#xff43;&#xf…

java 类默认访问权限_Java类 成员 访问权限 默认

Java中的访问权限控制符有四个.作用域 当前类 同一package 子孙类 其他packagepublic √ √ √ √protected √ …

java创建临时文件夹_java创建临时文件

[java]代码库/*** 创建临时文件** param prefix* 临时文件名的前缀* param suffix* 临时文件名的后缀* param dirName* 临时文件所在的目录&#xff0c;如果输入null&#xff0c;则在用户的文档目录下创建临时文件* return 临时文件创建成功返回true&#xff0c;否则返回false*…

java quartz2.1_quartz 2.1学习(一)

quartz是一种开源任务调度框架&#xff0c;提供了强大的任务调度机制&#xff0c;Quartz允许开发人员灵活地定义触发器的调度时间表&#xff0c;并可对触发器和任务进行关联映射。废话不多说了&#xff0c;介绍一下编程的基本步骤&#xff1a;实现Job接口&#xff0c;编码实现需…

java http setheader_response.setHeader各种用法详解

本文主要介绍了response.setHeader各种用法。具有很好的参考价值&#xff0c;下面跟着小编一起来看下吧一秒刷新页面一次 response.setHeader("refresh","1");二秒跳到其他页面 response.setHeader("refresh","2;URLotherPagename");没…