ui设计方向网站建设目标/百度的网址怎么写
JSON现在常用来做前后端数据交互,两个蝴蝶飞只是简单的对JSON做一下讲解和简单使用。关于JSON,我还了解的远远不够。由于本人经验有限,嘴皮子不溜,所以学术性,概念性,底层性的知识点暂时不做介绍。文章中有错误之处,欢迎拍砖和指点。在此,特别向阿里团队表示感谢,谢谢他们开发出了FastJSON这么好用的Jar包,并且免费开源出来。 两个蝴蝶飞只是粗浅的谈一下使用,非常抱歉,未能理解前辈们深邃的思想。
上一章简单介绍了JSON简介及前端简单解析(一),如果没有看过,请观看上一章
一 FastJSON简短介绍
JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架。
FastJson的特点:
1.FastJson数度快,无论序列化和反序列化,都是当之无愧的fast
2.功能强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
3.零依赖(没有依赖其它任何类库)
首先要下载fastjson的jar包。github地址: https://github.com/alibaba/fastjson
这里只牵扯到后端方面,用Junit4框架进行测试
二 FastJSON三个类的简单介绍
FastJSON包中有三个常用的对象,JSON,JSONObject,JSONArray三个对象。
二.一 JSON类
public abstract class JSON implements JSONStreamAware, JSONAware{}
JSON类实现了JSONStreamAware和JSONAware接口。
JSONAware接口:
package com.alibaba.fastjson;
public abstract interface JSONAware
{//转换成JSON类型的字符串public abstract String toJSONString();
}
JSONStreamAware接口:
public abstract interface JSONStreamAware //JSON+流+Aware 能力
{// 向里面写Appendable, 追加。 转换成JSON字符串public abstract void writeJSONString(Appendable paramAppendable)throws IOException;
}
Appendable接口:
public interface Appendable {
//添加字符串Appendable append(CharSequence csq) throws IOException;
//添加的字符串,可以截取 start,endAppendable append(CharSequence csq, int start, int end) throws IOException;
//添加单个字符Appendable append(char c) throws IOException;
}
二.二 JSONObject 类
public class JSONObject extends JSONimplements Map<String, Object>, Cloneable, Serializable, InvocationHandler{}
JSONObject类继承了JSON类,实现了Map接口,Cloneable(克隆接口),序列化(Serializable),InvocationHandler(调用处理器)
InvocationHandler.java
public Object invoke(Object proxy, Method method, Object[] args)throws Throwable;
默认值为16。
所以JSONObject主要存储的方式是以Map<Key,Value>的形式进行相应的存储。存储的是单值形式。
构造方法:
public JSONObject(Map<String, Object> map) {this.map = map;}
二.三 JSONArray类
public class JSONArray extends JSONimplements List<Object>, Cloneable, RandomAccess, Serializable{}
JSONArray类也继承了JSON类, 实现了List接口,Cloneable克隆接口,Serializable 序列化接口,RandomAccess接口。
public interface RandomAccess {}
实现了List接口,是以数组的形式进行相应的存储。
构造方法:
public JSONArray(List<Object> list) {this.list = list;}
JSONObject和JSONArray均实现了JSON类,故一般都是用子类,即单值用JSONObject,集合用JSONArray。
三 JSONObject类的具体使用
三.一 转换成普通字符串格式
转换的格式为: var obj={“name”:“两个蝴蝶飞”,“age”:24,“sex”:“男”};
代码为:
/*** 一个普通的字符串格式.* var obj={"name":"两个蝴蝶飞","age":24,"sex":"男"};* 用JSONObject进行添加.*/@Testpublic void testString1(){//空构造JSONObject json=new JSONObject();//内部使用的是map结构,put放置值json.put("id",1);json.put("name","两个蝴蝶飞");json.put("age",24);json.put("sex","男");//转换成json字符串. toJSONString()String result=json.toJSONString();System.out.println(result);}
是字符串格式。
三.二 将JSON字符串进行解析取值
@Test/** 解析JSON字符串* {"name":"两个蝴蝶飞","age":24,"sex":"男"};*/public void testToString1(){String source="{'name':'两个蝴蝶飞','age':24,'sex':'男'}";//利用静态方法parseObject(source),将要解析的资源放进去JSONObject json=JSON.parseObject(source);//取得数据时 可以取得具体的类型System.out.println(json.getIntValue("age"));System.out.println(json.getString("sex"));System.out.println(json.getString("name"));}
三.三 利用Map显式放置值
@Test/*** 前面带一个前缀. 用添加Map* {"person":{"name":"两个蝴蝶飞","age":24,"sex":"男"}}*/public void testString2(){Map<String,Object> map=new HashMap<String,Object>();map.put("name","岳建立");map.put("age",24);map.put("sex","男");JSONObject json=new JSONObject();json.put("person",map);String result=json.toJSONString();System.out.println(result);//如果不要前缀,可以直接 {"name":"两个蝴蝶飞","age":24,"sex":"男"}//System.out.println(JSON.toJSONString(map));}
三.四 取出Map中的值
@Testpublic void testToString2(){String source="{\"person\":{\"sex\":\"男\",\"name\":\"岳建立\",\"age\":24}}";JSONObject json=JSON.parseObject(source);System.out.println(json.getString("person"));// {"name":"两个蝴蝶飞","age":24,"sex":"男"}//继续取出JSONObject json2=JSON.parseObject(json.getString("person"));System.out.println(json2.getString("name"));System.out.println(json2.getString("sex"));System.out.println(json2.getIntValue("age"));}
四 JSONArray的使用
如果属性过多的话,那么就需要用一个User类进行相应的封装了。即开始引入对象了。
引入相应的User的类
package com.fastjson.pojo;
/***author 作者 两个蝴蝶飞*version 创建时间 2018年9月16日下午3:42:37
*/
public class User {private int id;private String name;private int age;private String sex;private String content;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", age=" + age + "]";}
}
四.一 JSONArray 配置单个JavaBean类
- 前缀没有用key值:
@Test/*** 将一个单对象转换成JSON格式* {"age":24,"content":"一个小小的程序员","id":1,"name":"两个蝴蝶飞","sex":"男"}*/public void testUser1(){User user=new User();user.setId(1);user.setName("两个蝴蝶飞");user.setSex("男");user.setAge(24);user.setContent("一个小小的程序员");//直接用JSON.toJSONString(); toJSONString(user)String result=JSON.toJSONString(user);System.out.println(result);}
- 前缀有key值
@Test
public void testUser1(){User user=new User();user.setId(1);user.setName("两个蝴蝶飞");user.setSex("男");user.setAge(24);user.setContent("一个小小的程序员");//用JSONObjectJSONObject json=new JSONObject();json.put("user",user);String result=json.toJSONString();System.out.println(result);}
- 取出没有key值的Java Bean
@Testpublic void testToUser4(){String source="{\"age\":24,\"content\":\"一个小小的程序员\",\"id\":1,\"name\":\"两个蝴蝶飞\",\"sex\":\"男\"}";//直接转换成对象User user1=JSON.parseObject(source,User.class);System.out.println(user1);}
- 取出有key值的的Java Bean
@Testpublic void testToUser1(){String source="{\"user\":{\"age\":24,\"content\":\"一个小小的程序员\",\"id\":1,\"name\":\"两个蝴蝶飞\",\"sex\":\"男\"}}";//直接转换成对象//先取出后面的值String result=JSON.parseObject(source).getString("user");
//继承转换User user1=JSON.parseObject(result,User.class);System.out.println(user1);}
四.二 JSONArray 配置List 集合
@Test//将一个对象数组集合添加到JSON中,用JSONArray/*{"persons":[{"age":0,"content":"小小的程序员而已0","id":0,"name":"两个蝴蝶飞0","sex":"男"},{"age":0,"content":"小小的程序员而已1","id":1,"name":"两个蝴蝶飞1","sex":"女"},{"age":0,"content":"小小的程序员而已2","id":2,"name":"两个蝴蝶飞2","sex":"男"}]}*/public void testUser2(){List<User> users = new ArrayList<User>(); for (int i = 0; i < 3; i++) { User u = new User(); u.setId((i));u.setName("两个蝴蝶飞"+i);u.setContent("小小的程序员而已"+i);u.setSex(i % 2 == 0 ? "男" : "女"); users.add(u); }//String result=JSON.toJSONString(users);JSONObject json=new JSONObject();json.put("persons",users);String result=json.toJSONString();System.out.println(result);}
解析List集合
@Testpublic void testToUser2(){String resource="{\"list\":[{\"id\":0,\"name\":\"两个蝴蝶飞0\",\"sex\":\"男\"} {\"id\":1,\"name\":\"两个蝴蝶飞1\",\"sex\":\"女\"},{\"id\":2,\"name\":\"两个蝴蝶飞2\",\"sex\":\"男\"}]}";String text=JSON.parseObject(resource).getString("list");//现在,这已经是一个数组了.如何将数组进行解析呢? 用JSONArrayJSONArray arrays=JSON.parseArray(text);List<User> allList=new ArrayList<User>();for(int i=0;i<arrays.size();i++){//用toJavaObject toJavaObjectUser u=JSON.toJavaObject(arrays.getJSONObject(i),User.class);allList.add(u);}for (User user : allList) {System.out.println(user.getId()+","+user.getName());}}
这是常用的几种解析方式。谢谢
解析成功,谢谢!!!
相关文章:
FastJson在Java后端方面解析使用(二)
JSON现在常用来做前后端数据交互,两个蝴蝶飞只是简单的对JSON做一下讲解和简单使用。关于JSON,我还了解的远远不够。由于本人经验有限,嘴皮子不溜,所以学术性,概念性,底层性的知识点暂时不做介绍。文章中有错误之处…...

PyTorch深度学习实战(5)——计算机视觉基础
PyTorch深度学习实战(5)——计算机视觉基础 0. 前言1. 图像表示2. 将图像转换为结构化数组2.1 灰度图像表示2.2 彩色图像表示3 利用神经网络进行图像分析的优势小结系列链接0. 前言 计算机视觉是指通过计算机系统对图像和视频进行处理和分析,利用计算机算法和方法,使计算机…...

ImageReader保存图片转 opencvmat
目录 ImageReader 直接保存图片,没成功,格式是yuv420,需要转换 转opencv nv21保存图片,测试ok rgb888 data保存图片: ImageReader 直接保存图片,没成功,格式是yuv420,需要转换 …...

【vue3+ts项目】配置husky+配置commitlint
上一篇文章中配置了eslint校验代码工具 【vue3ts项目】配置eslint校验代码工具,eslintprettierstylelint 1、配置husky 每次手动执行命令才能格式化代码,如果有人没有格式化就提交到远程仓库,这个规范就起不到作用了,所有需要强…...

html实现iframe全屏
前言 html浏览器全屏操作,基于jquery iframe全屏、指定标签全屏 实现 css /** 全屏*/ .lay-dbclick-box{position: relative;width: 100%;height: 100%; } .lay-dbclick-screen{position: absolute;top: 0;left: 0;width: 100%;height: 100%;z-index: 999999999…...

【es6】中的Generator
Generator 一、Generator 是什么?1.1 与普通函数写法不一样,有两个不同 二、Generator 使用2.1 书写方法 三、yield语句3.1 yield和return3.2 注意事项3.3 yield*语句3.4 yield*应用 四、next方法4.1参数4.2 运行逻辑 五、异步解决方案六、Generator相关…...

桥梁安全监测方法和内容是什么?
桥梁安全监测方法和内容是什么?桥梁监测是保障桥梁安全和稳定的重要手段。随着科技的进步,桥梁监测技术和设备不断完善,监测内容也越来越全面。本文万宾科技小编将为大家介绍桥梁安全监测的方法和内容,以期帮助大家更好地了解这一领域。 桥梁…...

prometheus部署及钉钉告警集成Grafana
1、准备工作 安装包 📎alertmanager-0.23.0.linux-amd64.tar.gz 📎node_exporter-1.3.1.linux-amd64.tar.gz 📎prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz 服务端口 Prometheus 9090 node_exporter 9100 alertmanager …...

Java百度提前批面试题
今天分享百度提前批的 Java 后端开发面经,整体上考察的点挺多的,主要重点考察了网络i/o、网络协议、linux系统、mysql,Java 问的不多,可能是百度的后端开发的语言不是主要以 Java 为主,所以重点看面试者的计算机基础是…...

Go语言中的Oop面向对象
Go In OOp 一、 Go是面向对象的吗?二、Structs Instead of Classes 结构体 - OOP in Go三、 Composition Instead of Inheritance 组合嵌套 - OOP in Go1.Composition by embedding structs2. Embedding slice of structs 四、Polymorphism 多态 - OOP in Go1. Polymorphism u…...

Duplicate keys detected: ‘1‘. This may cause an update error.
报错 Duplicate keys detected: ‘1’. This may cause an update error. 注释: 检测到重复密钥:‘1’。这可能会导致更新错误。 解决 首先判断是因为for循环导致的,检查是否出现重复。 笔者是同一个页面两处for循环导致...

C++(8.21)c++初步
1.斐波那契: #include <iostream> #include<iomanip>using namespace std;int main() {cout << "Hello World!" << endl;int a[10];for(int i0;i<10;i){if(0i||1i){a[i]1;}elsea[i]a[i-1]a[i-2];cout <<setw(4) <&l…...

【【Verilog典型电路设计之log函数的Verilog HDL设计】】
Verilog典型电路设计之log函数的Verilog HDL设计 log函数是一种典型的单目计算函数,与其相应的还有指数函数、三角函数等。对于单目计算函数的硬件加速器设计一般两种简单方法:一种是查找表的方式;一种是使用泰勒级数展开成多项式进行近似计算。这两种方式在设计方…...

数字放大(C++)
系列文章目录 1.进阶的卡沙_睡觉觉觉得的博客-CSDN博客 2. 数1的个数_睡觉觉觉得的博客-CSDN博客 3. 双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客 4. 足球联赛积分_睡觉觉觉得的博客-CSDN博客 5. 大减价(一级)_睡觉觉觉得的博客-CSDN博客 6. 小写字母的判断_睡觉觉觉得…...

FOC控制框架图
pmsm电机数学模型以及FOC控制框图(开源小项目FOC控制BLDC电机)_foc 框图_栋哥爱做饭的博客-CSDN博客 电机控制----FOC框架讲解_foc电机控制_修才生的博客-CSDN博客...

Spring工具类(获取bean,发布事件)
spring-beans-5.3.1.jar Component public final class SpringUtils implements BeanFactoryPostProcessor{/*** Spring应用上下文环境*/private static ConfigurableListableBeanFactory beanFactory;//初始化成员变量Overridepublic void postProcessBeanFactory(Configurab…...

腾讯云和阿里云服务器折扣对比_看看哪家划算?
阿里云服务器和腾讯云服务器根据购买时长可以享受一定的优惠折扣,综合对比下来腾讯云折扣更低,阿腾云来对比下阿里云和腾讯云的云服务器根据购买时长可以享受的常规折扣对比: 目录 阿里云和腾讯云折扣对比 阿里云服务器常规折扣 腾讯云服…...

GO语言中的Defer与Error异常报错详细教程
目录标题 一、Defer1. Example2. Deferred methods 延迟方法3. Arguments evaluation 延迟参数4. Stack of defers 延迟程序堆栈5. Practical use of defer 实际使用 二、Error1. Example2. PathError3. DNSError4. Direct Comparison 直接比较5. Do not ignore errors 不要忽略…...

AP6315 DC单节锂电池充电IC 同步2A锂电芯片
概述 是一款面向5V交流适配器的2A锂离子电池充电器。它是采用1.5MHz固定频率的同步降压型转换器,因此具有高达90%以上的充电效率,自身发热量极小。包括完整的充电终止电路、自动再充电和一个达1%的4.2V预设充电电压,内部集成了防反灌保护、输…...

PDF校对工具正式上线,为用户提供卓越的文档校对解决方案
为满足当下对数字化文档校对的精准需求,我们今日正式发布全新的PDF校对工具。经过深入的技术研发与细致的测试,该工具旨在为企业和个人用户带来一个高效且准确的PDF文档校对平台。 PDF校对工具的主要特性: 1.全面性校对:工具支持…...

WSL 配置 Oracle 19c 客户端
Windows WSL 登陆后显示如下: Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 4.4.0-19041-Microsoft x86_64)* Documentation: https://help.ubuntu.com* Management: https://landscape.canonical.com* Support: https://ubuntu.com/advantageSystem information as…...

ChatGPT⼊门到精通(1):ChatGPT 是什么
⼀、直观感受 1、公司 OpenAI(美国) 2、官⽅⽹站 3、登录ChatGPT 
idea启动正常,打成jar包时,启动报错
背景 自己写了个小程序,在idea中启动正常,达成jar包发布时,启动报错。 Caused by: java.sql.SQLException: unknown jdbc driver : at com.alibaba.druid.util.JdbcUtils.getDriverClassName(JdbcUtils.java:517) at com.alibaba.druid.pool…...

软考高级系统架构设计师系列论文八十九:论软件需求分析方法和工具的选用
软考高级系统架构设计师系列论文八十九:论软件需求分析方法和工具的选用 一、软件需求相关知识点二、摘要三、正文四、总结一、软件需求相关知识点 软考高级系统架构设计师:论软件需求管理...

java八股文面试[JVM]——类加载器
一、类加载器的概念 类加载器是Java虚拟机用于加载类文件的一种机制。在Java中,每个类都由类加载器加载,并在运行时被创建为一个Class对象。类加载器负责从文件系统、网络或其他来源中加载类的字节码,并将其转换为可执行的Java对象。类加载器…...

CSS中如何实现元素之间的间距(Margin)合并效果?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 外边距合并的示例:⭐ 如何控制外边距合并:⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅ÿ…...

【实操干货】如何开始用Qt Widgets编程?(三)
Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 在本文中࿰…...

基于深度学习的图像风格迁移发展总结
前言 本文总结深度学习领域的图像风格迁移发展脉络。重点关注随着GAN、CUT、StyleGAN、CLIP、Diffusion Model 这些网络出现以来,图像风格迁移在其上的发展。本文注重这些网络对图像风格迁移任务的影响,以及背后的关键技术和研究,并总结出一…...

小程序页面间有哪些传递数据的方法?
使用全局变量实现数据传递 在 app.js 文件中定义全局变量 globalData, 将需要存储的信息存放在里面使用的时候,直接使用 getApp() 拿到存储的信息 App({// 全局变量globalData: {userInfo: null} }) 使用 wx.navigateTo 与 wx.redirectTo 的时候&…...

bh002- Blazor hybrid / Maui 保存设置快速教程
1. 建立工程 bh002_ORM 源码 2. 添加 nuget 包 <PackageReference Include"BootstrapBlazor.WebAPI" Version"7.*" /> <PackageReference Include"FreeSql" Version"*" /> <PackageReference Include"FreeSql.…...