fastjson 使用记录
参考:
https://www.cnblogs.com/cdf-opensource-007/p/7106018.html
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; public class JsonTest2 { public static void main(String[] args) { String arrContent = "[\n" +
" {\n" +
" \"astnamebyuser\": \"资产名称1\",\n" +
" \"ip\": 10,\n" +
" \"port\": \"\",\n" +
" \"companytypeid\": \"\",//组织机构一级导航id\n" +
" \"deptid\": \"\",//组织架构二级导航id\n" +
" \"infosysid\": \"\",//信息系统id\n" +
" \"devicetypeid\": \"\",//设备类型id\n" +
" \"templategroupid\":\"\",//模板分组id\n" +
" \"templateid\": \"\",//模板id\n" +
" \"templatename\": \"\",//如果非自定义模板传null,如果是自定义模板传自定义名称\n" +
" \"certificateusername\": \"\",//用户名\n" +
" \"certificatepassword\": \"\",//密码\n" +
" \"principal\": \"\",//维护人\n" +
" \"department\": \"\",//所属部门\n" +
" \"description\": \"\"//备注\n" +
" },\n" +
" {\n" +
" \"astnamebyuser\": \"资产名称2\",\n" +
" \"ip\": 11,\n" +
" \"port\": \"\",\n" +
" \"companytypeid\": \"\",//组织机构一级导航id\n" +
" \"deptid\": \"\",//组织架构二级导航id\n" +
" \"infosysid\": \"\",//信息系统id\n" +
" \"devicetypeid\": \"\",//设备类型id\n" +
" \"templategroupid\":\"\",//模板分组id\n" +
" \"templateid\": \"\",//模板id\n" +
" \"templatename\": \"\",//如果非自定义模板传null,如果是自定义模板传自定义名称\n" +
" \"certificateusername\": \"\",//用户名\n" +
" \"certificatepassword\": \"\",//密码\n" +
" \"principal\": \"\",//维护人\n" +
" \"department\": \"\",//所属部门\n" +
" \"description\": \"\"//备注\n" +
" }\n" +
" ]"; JSONArray jsonArray = JSON.parseArray(arrContent);
for (Object obj :
jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
// 这里要看传的是String还是Integer,得按照对应的数据类型来获取,否则会抛出异常
System.out.println(jsonObject.getString("astnamebyuser")+" "+jsonObject.getInteger("ip"));
} } }
目前所在公司的前端一般一律传字符串,所以用起来还是挺方便的,直接 getString 就行了,不过如果传的是特定的数据类型,就得用特定的方法来获取,比如 integer类型的,就要用 getInteger 来进行获取
下面这个是把循环遍历中的obj通过getString/getInteger/其他获取数据类型的方法 来获取键的值,然后用bean的set方法进行赋值,最后对整个bean进行处理就行了
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.kinome.rm.bean.Assets; public class JsonTest2 { public static void main(String[] args) { String content = "{\n" +
" \"ipgrouplist\":[\n" +
" {\n" +
" \"astnamebyuser\": \"资产名称1\",\n" +
" \"ip\": \"192.168.1.1\",\n" +
" \"port\": \"\",\n" +
" \"companytypeid\": \"\",//组织机构一级导航id\n" +
" \"deptid\": \"\",//组织架构二级导航id\n" +
" \"infosysid\": \"\",//信息系统id\n" +
" \"devicetypeid\": \"\",//设备类型id\n" +
" \"templategroupid\":\"\",//模板分组id\n" +
" \"templateid\": \"\",//模板id\n" +
" \"templatename\": \"\",//如果非自定义模板传null,如果是自定义模板传自定义名称\n" +
" \"certificateusername\": \"\",//用户名\n" +
" \"certificatepassword\": \"\",//密码\n" +
" \"principal\": \"\",//维护人\n" +
" \"department\": \"\",//所属部门\n" +
" \"description\": \"\"//备注\n" +
" },\n" +
" {\n" +
" \"astnamebyuser\": \"资产名称2\",\n" +
" \"ip\": \"192.168.1.2\",\n" +
" \"port\": \"\",\n" +
" \"companytypeid\": \"\",//组织机构一级导航id\n" +
" \"deptid\": \"\",//组织架构二级导航id\n" +
" \"infosysid\": \"\",//信息系统id\n" +
" \"devicetypeid\": \"\",//设备类型id\n" +
" \"templategroupid\":\"\",//模板分组id\n" +
" \"templateid\": \"\",//模板id\n" +
" \"templatename\": \"\",//如果非自定义模板传null,如果是自定义模板传自定义名称\n" +
" \"certificateusername\": \"\",//用户名\n" +
" \"certificatepassword\": \"\",//密码\n" +
" \"principal\": \"\",//维护人\n" +
" \"department\": \"\",//所属部门\n" +
" \"description\": \"\"//备注\n" +
" }\n" +
" ],\n" +
" \"ipgroupname\":\"ip组1\",\n" +
" \"execmethod\":\"1\",\n" +
" \"taskdescription\":\"描述\"\n" +
"\n" +
"}"; JSONObject parseObject = JSON.parseObject(content);
JSONArray jsonArray = parseObject.getJSONArray("ipgrouplist");
String ipgroupname = parseObject.getString("ipgroupname");
String execmethod = parseObject.getString("execmethod");
String taskdescription = parseObject.getString("taskdescription");
Assets assets = new Assets(); System.out.println(ipgroupname + " " + execmethod + " " + taskdescription);
for (Object obj :
jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
assets.setIp(jsonObject.getString("ip"));
System.out.println(jsonObject.toString());
} } }
fastjson 使用记录的更多相关文章
- JSON工具类库: alibaba/fastjson 使用记录
JSON工具类库: alibaba/fastjson 使用记录 一.了解JSON JSON标准规范中文文档: http://www.json.org/json-zh.html 最佳实践:http:// ...
- 【Json】fastjson与jackson常用操作记录
本文只是记录fastjson.jackson一些常用的操作方法,没作比较,网上写比较的文章很多啦. 1.对象转Json串 // fastjson String objStr = JSON.toJSON ...
- 记录心得-FastJson分层解析demo示例
记录一下,平时用到,可速查!关键: // startArray(); 开始解析数组 // endArray(); 结束解析数组 // startObject(); 开始解析键值对 // endObje ...
- [Java学习] JSON工具学习记录--FastJSON
最近做项目,总是与json打交道,在用了即可json工具后,个人认为fastJson最好用,很方便,API也清晰可见,所以记录下使用方法,给需要的人提供帮助.(部分摘抄自网络) 一.API入口 Fas ...
- 关于一种fastjson的死循环情况记录
最近在一次项目中,使用fastjson做接口转换中,碰到了一个Stack Overflow.发现在getxxx方法内如果再次嵌套使用fastjson作json转换,就会无限循环. 错误实例: clas ...
- fastjson过滤器简单记录
fastjson过滤器,该字段可以将转化的json字段遍历,方便实用 1 /** * 通用输出json * @param object * @return json字符串 */ public Stri ...
- fastjson 1.2.24反序列化导致任意命令执行漏洞分析记录
环境搭建: 漏洞影响版本: fastjson在1.2.24以及之前版本存在远程代码执行高危安全漏洞 环境地址: https://github.com/vulhub/vulhub/tree/master ...
- 记录一次源码扩展案列——FastJson自定义反序列化ValueMutator
背景:曾经遇到一个很麻烦的事情,就是一个json串中有很多占位符,需要替换成特定文案.如果将json转换成对象后,在一个一个属性去转换的话就出出现很多冗余代码,不美观也不是很实用. 而且也不能提前在j ...
- Android开发经验记录
一. 代码规范 定一个规范的主要目的,是为了让不同的开发人员写的代码能保持一致性,方便别人看自己的代码.另外,对个人来说,也能起到让自己看着舒服的作用. 1. 基本 * 使用UTF-8 ...
随机推荐
- python2与python3的区别(持续更新)
1,print(打印),python2不换行可以使用逗号,python3不换行使用end='' python2版本: print 'a' 输出一个字符串 print a 输出一个变量 print 'a ...
- 使用 Azure PowerShell 管理 Azure 虚拟网络和 Windows 虚拟机
Azure 虚拟机使用 Azure 网络进行内部和外部网络通信. 本教程介绍了如何在虚拟网络中创建多个虚拟机 (VM),以及如何在虚拟机之间配置网络连接. 你将学习如何执行以下操作: 创建虚拟网络 创 ...
- 转:js小技巧 ,将彻底屏蔽鼠标右键,可用于Table ,取消选取、防止复制,IE地址栏前换成自己的图标
1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<table border oncontextmenu= ...
- Chrome 无法加载Shockwave Flash
遇到的问题 Chrome经常出现上图的提示,把Adobe Flash重装了N多次也是无法解决此问题,经多次尝试终于解决此问题. 解决方法 1.在Chrome地址栏输入:chrome://plugins ...
- Linux yum源详解
软件包安装方式 0.默认从官网下载包(国内,雅虎,网易,阿里云) cat /etc/yum.repos.d/rhel-source.repo [yum文件目录--redhat6版] [ ...
- 安装Tidb数据库出现SSD硬盘IOPS不到40000的错误
今天安装tidb数据库出现IOPS过低的问题,这里如果仅仅是测试的话我们可以降低这个值,大概遇到的问题是: 解决方法: 1.我们在中控机的目录下修改某个配置文件: [tidb@:vg_adn_tidb ...
- Hadoop HBase概念学习系列之META表和ROOT表(六)
在 HBase里的HRegion 里,谈过,HRegion是按照表名+开始/结束主键,即表名+主键范围来区分的.由于主键范围是连续的,所以一般用开始主键就可以表示相应的HRegion了. 不过,因为我 ...
- 关于服务器端的Json文件的接收,踩了一早上的坑的问题
JSON文件的发送和接收 服务器端接收的JSON文件也是String型的文件,因此不可以直接写成如下的格式,此错误格式下无法找到发送的{}内的数据,服务器会报错提示无法找到你需要的类型数据,也就是根本 ...
- JavaScript无阻塞加载具体方式
将脚本放在底部.\还是放在head中,用以保证在js加载前,能加载出正常显示的页面.\<script>标签放在\前 成组脚本:由于每个\<script>标签下载时阻塞页面解析过 ...
- Spring framework3.2整合hibernate4.1报错:No Session found for current thread
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransact ...