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 ...
随机推荐
- python基础一数据类型之集合
摘要: python基础一中介绍数据类型的时候有集合,所以这篇主要讲集合. 1,集合的定义 2,集合的功能 3,集合的方法 1,集合的定义 list1 = [1,4,5,7,3,6,7,9] set1 ...
- NodeJS链接MySql数据库
//1.用npm命令安装mysql模块 npm install mysql //2.js文件中引入mysql模块 const mysqlModule = require('mysql'); //3.创 ...
- .Net WebRequest异步请求与WebClient异步请求
很多情况下一般会使用同步方式发出请求,直到响应后再做后续的逻辑处理等,但有时候后续的逻辑处理不依赖于请求的结果或者是可以挂起等到响应后再处理,又或者是为了解决UI“假死”的现象,这时可以使用异步请求 ...
- guider – 全系统Linux性能分析器
Guider是一个免费且开源的,功能强大的全系统性能分析工具,主要以Python for Linux 操作系统编写. 它旨在衡量系统资源使用量并跟踪系统行为,从而使其可以有效分析系统性能问题或进行性能 ...
- MySQL: Connection Character Sets and Collations
character_set_server collation_servercharacter_set_databasecollation_database character_set_clientch ...
- python基础学习11----函数
一.函数的定义 def 函数名(参数列表): 函数体 return语句 return语句不写或后边不加任何对象即为return None 二.函数的参数 无参数 def func1(): print( ...
- [Spark Core] Spark 实现气温统计
0. 说明 聚合气温数据,聚合出 MAX . MIN . AVG 1. Spark Shell 实现 1.1 MAX 分步实现 # 加载文档 val rdd1 = sc.textFile(" ...
- Linux nmap命令详解
nmap,也就是Network Mapper,是Linux下的网络扫描和嗅探工具包. nmap是在网络安全渗透测试中经常会用到的强大的扫描器.功能之强大,不言而喻.下面介绍一下它的几种扫描命令.具体的 ...
- django复习-1-环境搭建和创建项目
一.虚拟环境搭建 1. 创建虚拟环境,需要联网 mkvirtualenv django_py3_1.11 -p python3 2. 安装Django 使用django 1.11.11版本,注意需要联 ...
- jQuery1.9+ 废弃的函数和方法 升级Jquery版本遇到的问题
面临问题 很久没关注JQuery了,今天突然想升级一下系统中使用的jquery版本,突然发现,升级JQuery版本到1.9之后出现了很多问题,比如:$.browser is undefined.突然就 ...