凡科网站内容怎么做效果好/网上有免费的网站吗

凡科网站内容怎么做效果好,网上有免费的网站吗,文学类网站怎么做,wordpress不能进后台FastJson:JSON JSONObject JSONArray详解以及SimplePropertyPreFilter 的介绍 FastJson是阿里巴巴开发的一款专门用于Java开发的包,实现Json对象,JavaBean对,Json字符串之间的转换。 文章目录 FastJson:JSON JSONObje…

FastJson:JSON JSONObject JSONArray详解以及SimplePropertyPreFilter 的介绍

FastJson是阿里巴巴开发的一款专门用于Java开发的包,实现Json对象,JavaBean对,Json字符串之间的转换。


文章目录

  • FastJson:JSON JSONObject JSONArray详解以及SimplePropertyPreFilter 的介绍
  • 一、JSON对象介绍
  • 二、FastJson-JSON
  • 三、FastJson-JSONObject
  • 四、FastJson-JSONArray
  • 五、常用方法汇总
    • 常用方法
    • 简单说一下FastJSON的JSON过滤器


一、JSON对象介绍

JSON的特点如下:

  1. 数据在花括号中。
  2. 数据以"键:值"对的形式出现(其中键多以字符串形式出现,值可取字符串,数值,甚至其他json对象)。
  3. 每两个"键:值"对以逗号分隔(最后一个"键:值"对省略逗号)。

例:

普通Json对象
{"ID": 1001,"name": "张三","age": 24}
数组Json对象
[{"ID": 1001, "name": "张三", "age": 24},{"ID": 1002, "name": "李四", "age": 25},{"ID": 1003, "name": "王五", "age": 22}
]复杂Json对象
{"部门名称":"研发部","部门成员":[{"ID": 1001, "name": "张三", "age": 24},{"ID": 1002, "name": "李四", "age": 25},{"ID": 1003, "name": "王五", "age": 22}],"部门位置":"xx楼21号"
}

二、FastJson-JSON

JSON是一个抽象类并且实现了JSONStreamAware, JSONAware接口,提供了JSON转换的方法(详细方法说明看后文)。

JSON多用于JavaBean->JSONString 或者 JSONString->javaJSON

@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StudentEntity {@JSONField(name = "student_name",ordinal = 1)private String name;@JSONField(name = "student_age",ordinal = 2)private Integer age;
}
 @Testpublic void beanJsonTest() {StudentEntity student = StudentEntity.builder().name("张三").age(18).build();String jsonStudentString = JSON.toJSONString(student); //{"student_name":"张三","student_age":18}StudentEntity studentObject = JSON.parseObject(jsonStudentString, StudentEntity.class);  //转为java对象}

三、FastJson-JSONObject

JSONObject继承了JSON并实现了Map接口。

底层是个Map集合,多用于操作JSONObject 如取属性等,Map集合的功能也都有。

@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StudentEntity {@JSONField(name = "student_name",ordinal = 1)private String name;@JSONField(name = "student_age",ordinal = 2)private Integer age;
}
 @Testpublic void beanJsonTest() {StudentEntity student = StudentEntity.builder().name("张三").age(18).build();String jsonStudentString = JSON.toJSONString(student); //{"student_name":"张三","student_age":18}/**Map<String,Object> map = new HashMap<>();map.put("student_name", "李四");map.put("student_age", 19);map.put("date",students);JSONObject jsonObject = new JSONObject(map);**/JSONObject jsonObject = JSONObject.parseObject(jsonStudentString); //{"student_name":"张三","student_age":18}jsonObject.put("student_name", "李四");jsonObject.put("student_age", 19);//{"student_name":"李四","student_age":19}jsonObject.put("date",student);//{"student_name":"张三","student_age":18,"date":[{"student_name":"张三","student_age":18},{"student_name":"张三","student_age":18},{"student_name":"张三","student_age":18}]}//get方法  根据key取出valueStudentEntity date = jsonObject.getObject("date", StudentEntity.class);String studentName = jsonObject.getObject("student_name", String.class);jsonObject.getString("student_name");}

四、FastJson-JSONArray

JSONObject继承了JSON并实现了List接口。

底层是个ArrayList,多用于用于操作JSONArray 比如遍历等,通常与JSONObject联合使用。

@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StudentEntity {@JSONField(name = "student_name",ordinal = 1)private String name;@JSONField(name = "student_age",ordinal = 2)private Integer age;
}
    @Testpublic void twoTest3() {StudentEntity student1 = StudentEntity.builder().name("张三").age(18).build();StudentEntity student2 = StudentEntity.builder().name("张三").age(18).build();StudentEntity student3 = StudentEntity.builder().name("张三").age(18).build();ArrayList<StudentEntity> students = Lists.newArrayList(student1, student2, student3);JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(students));jsonArray.forEach(item -> {String jsonStudentStringItem = JSONObject.toJSONString(item);System.out.println(jsonStudentStringItem);});//{"student_name":"张三","student_age":18}//{"student_name":"张三","student_age":18}//{"student_name":"张三","student_age":18}JSONObject StudentJson = new JSONObject();StudentJson.put("Student",jsonArray);System.out.println(StudentJson.toJSONString());}

在这里插入图片描述

五、常用方法汇总

常用方法

  /*** FastJson常用方法*/@Testpublic void fastJSONTest() {StudentEntity student = StudentEntity.builder().name("张三").age(18).build();//1.JSON常用方法//1.1  toJSONString :将java对象转为JSONStringString jsonStudentString = JSON.toJSONString(student);//{"student_name":"张三","student_age":18}//1.2  parseObject :将JSONString转为java对象StudentEntity studentObject = JSON.parseObject(jsonStudentString, StudentEntity.class);//StudentEntity(name=张三, age=18)// 1.3 JSONtoJSONBytes():将 Java 对象序列化为 JSON 字节数组byte[] jsonStudentStringBytes = JSON.toJSONBytes(student);//[123, 34, 115, 116, 117, 100, 101, 110, 116, 95, 110, 97, 109, 101, 34, 58, 34, 228, 189, 254, 228, 184, 230, 34, 44, 34,115, 116, 117, 100, 101, ]//1.4 JSONparseBytes():将 JSON 字节数组反序列化为 Java 对象StudentEntity studentObject2 = JSON.parseObject(jsonStudentStringBytes, StudentEntity.class);//1.5 JSON.parseObject:将Java对象转为JSONObjectJSONObject jsonObject = JSON.parseObject(jsonStudentString);//2.JSONObject常用方法 JSONObject继承了JSON类,并实现了Map接口,所以可以调用JSON类中的方法,并且重写了Map相关方法//2.1 JSONObject.toJSONString():将JSONObject转为JSONStringString jsonStudentString2 = jsonObject.toJSONString();//{"student_name":"张三","student_age":18}//2.2 JSONObject.put():根据key设置valuejsonObject.put("STUDENT", StudentEntity.builder().name("王五").age(22).build());//{"student_name":"张三","student_age":18,"STUDENT":{"student_name":"王五","student_age":22}}//2.3 JSONObject.getXxx():根据key取出valueString studentName = jsonObject.getString("student_name");//张三Integer studentAge = jsonObject.getInteger("student_age");//18/* String name = jsonObject.getObject("name", String.class);Integer age = jsonObject.getObject("age", Integer.class);*/StudentEntity studentObject3 = jsonObject.getObject("STUDENT", StudentEntity.class);//StudentEntity(name=王五, age=22)//2.4 toJavaObject:将JSONObject转为Java对象StudentEntity javaObject = jsonObject.toJavaObject(StudentEntity.class);//2.5 putAll():合并两个JSONObjectString json1 = "{\"name\":\"Jack\"}";String json2 = "{\"age\":35}";JSONObject jsonObject1 = JSON.parseObject(json1);JSONObject jsonObject2 = JSON.parseObject(json2);JSONObject jsonObject3 = new JSONObject();jsonObject3.putAll(jsonObject1);jsonObject3.putAll(jsonObject2);//{"name":"Jack","age":35}//2.6 isEmpty():判断JSONObject是否为空boolean empty = jsonObject.isEmpty();//containsKey() keySet() vlues() clear() remove() containsValue() 跟Map集合的方法一样 不在列举//3.JSONArray常用方法//3.1. parseArray:将Java对象转为JSONArrayStudentEntity student1 = StudentEntity.builder().name("张三1").age(18).build();StudentEntity student2 = StudentEntity.builder().name("张三2").age(18).build();StudentEntity student3 = StudentEntity.builder().name("张三3").age(18).build();ArrayList<StudentEntity> studentEntities = Lists.newArrayList(student1, student2, student3);JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(studentEntities));//[{"student_name":"张三1","student_age":18},{"student_name":"张三2","student_age":18},{"student_name":"张三3","student_age":18}]//3.2. toJSONString():将JSONArray转为JSONStringString jsonArrayString = jsonArray.toJSONString();//"[{"student_name":"张三1","student_age":18},{"student_name":"张三2","student_age":18},{"student_name":"张三3","student_age":18}]//3.3. toJavaObject():将JSONArray转为Java对象List<StudentEntity> studentEntities1 = jsonArray.toJavaList(StudentEntity.class);// forEach(),fparallelStream(),stream(),spliterator(),iterator(),sort(),get()这些Arraylist方法同样都有,不在列举}

简单说一下FastJSON的JSON过滤器

SimplePropertyPreFilter 简单过滤器

class Person {public String name;public int age;
}
@Testpublic void toJSONStringWithFilterExample() {Person person = new Person();person.name = "Eve";person.age = 40;// SimplePropertyPreFilter类 实现 JSON字符串过滤SimplePropertyPreFilter simplePropertyPreFilter1 = new SimplePropertyPreFilter();//添加过滤字段simplePropertyPreFilter1.getExcludes().add("age");//不包括 "age" 字段//调用toJSONString将Java转String时传入过滤器System.out.println(JSON.toJSONString(person, simplePropertyPreFilter1));//{"name":"Eve"}//或者SimplePropertyPreFilter simplePropertyPreFilter2 = new SimplePropertyPreFilter();//添加保留字段simplePropertyPreFilter2.getIncludes().add("name");//包括 "name" 字段//调用toJSONString将Java转String时传入过滤器System.out.println(JSON.toJSONString(person, simplePropertyPreFilter2));//{"name":"Eve"}
}

自定义过滤器
FastJson提供的简单过滤器很多时候无法满足我们需求,这个时候就可以自定义管理器

@Testpublic void toJSONStringWithFilterExample2() {Person person = new Person();//1.实现 ValueFilter 接口 重写 process 方法ValueFilter filter = (object, name, value) -> {if (name.equals("age")) {return null; // 不包括 "age" 字段}return value;};// 2.实现 PropertyFilter 接口 重写 apply 方法PropertyFilter filter2 = (object, name, value) -> {if (name.equals("age")) {return false; // 不包括 "age" 字段}return true;};String jsonString1 = JSON.toJSONString(person, filter);//{"name":"Eve"}String jsonString2 = JSON.toJSONString(person, filter2);//{"name":"Eve"}}

当然还可以根据管理器实现原来去手搓来增填功能,深入了解推荐一篇文章
API接口使用Jackson序列化JSON数据动态过滤字段

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

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

相关文章

DEFI币生态重构加速,XBIT去中心化交易所引领DEX安全新范式

2025年3月18日&#xff0c;全球加密市场在监管与技术共振下迎来结构性变革。去中心化金融&#xff08;DeFi&#xff09;代币DEFI币因跨链流动性协议升级引发社区热议&#xff0c;而币应XBIT去中心化交易所&#xff08;以下简称XBIT&#xff09;凭借其链上透明验证机制、无需下载…

将bin文件烧录到STM32

将bin文件烧录到STM32 CoFlash下载生成hex文件hex2bin使用下载bin到单片机 CoFlash下载 选择需要安装的目录 在Config中可以选择目标芯片的类型 我演示的是 stm32f103c8t6 最小系统板 Adapter&#xff1a;烧录器类型 Max Clock&#xff1a;下载速度 Por&#xff1a;接口类型&am…

Android NDK --- JNI从入门到基础的全面掌握 (上)

引言 先问 jni是什么&#xff1f; jni和ndk 的关系&#xff1f; 答&#xff1a; java调用 C、C 的代码。 两者一个是调用&#xff0c;一个是用c 、c 写 。 这两个问题问出来似乎知道又好像不知道。 正文 jni 概述 定义&#xff1a;java Native Interface 即 java本地接口 …

爬虫 crawler 入门爬取不设防网页 并实现无限增生

基础版本 爬取网页后直接将前端html代码不加处理的输出 # pip3 install requests import requests# request the target URL def crawler():response requests.get("https://www.scrapingcourse.com/ecommerce/")response.raise_for_status()print(response.text)…

HarmonyOs- UIAbility应用上下文

上下文为何物 上下文在计算机科学领域是一个广泛存在的概念。是现代操作系统核心抽象概念之一。其本质是环境信息的结构化封装。 有过开发经验的都知道&#xff0c;当我们在一个系统上进行开发的时候&#xff0c;无论是Android&#xff0c;HarmonyOs&#xff0c;Linux 等等&a…

Redis解决缓存击穿问题——两种方法

目录 引言 解决办法 互斥锁&#xff08;强一致&#xff0c;性能差&#xff09; 逻辑过期&#xff08;高可用&#xff0c;性能优&#xff09; 设计逻辑过期时间 引言 缓存击穿&#xff1a;给某一个key设置了过期时间&#xff0c;当key过期的时候&#xff0c;恰好这个时间点对…

架构思维:软件建模与架构设计的关键要点

文章目录 1. 软件建模的核心概念2. 七种常用UML图及其应用场景类图时序图组件图部署图用例图状态图活动图 3. 软件设计文档的三阶段结构4. 架构设计的关键实践1. 用例图&#xff1a;核心功能模块2. 部署图&#xff1a;架构演进阶段3. 技术挑战与解决方案4. 关键架构图示例5. 架…

numpy学习笔记14:模拟随机游走过程(一次实验)

numpy学习笔记14&#xff1a;模拟随机游走过程(一次实验) 随机游走是一个对象在离散时间步中的随机移动&#xff0c;每次移动的方向和步长由概率决定。在用户提供的代码中&#xff0c;步长数组steps的每个元素是-1或1&#xff0c;代表向左或向右移动一步。np.random.choice的作…

FPGA-DE2115开发板实现流水灯

文章目录 一、安装VScode&#xff0c;在其中下载安装Verilog-HDL/SystemVerilog插件&#xff1b;&#xff08;1&#xff09;安装VScode&#xff08;2&#xff09;安装插件&#xff08;3&#xff09;与Quartus关联 二、不分模块实现流水灯&#xff08;1&#xff09;新建工程&…

JS逆向案例-HIKVISION-视频监控的前端密码加密分析

免责声明 本文仅为技术研究与渗透测试思路分享,旨在帮助安全从业人员更好地理解相关技术原理和防御措施。任何个人或组织不得利用本文内容从事非法活动或攻击他人系统。 如果任何人因违反法律法规或不当使用本文内容而导致任何法律后果,本文作者概不负责。 请务必遵守法律…

碰一碰发视频saas系统技术源头一站式开发文档

碰一碰发视频系统技术源头一站式开发文档 一、引言 在数字化信息传播高速发展的当下&#xff0c;如何让视频分享更便捷、高效&#xff0c;成为商家和开发者们关注的焦点。“碰一碰发视频”系统以其独特的交互方式和强大的功能优势&#xff0c;为视频分享领域带来了革命性变革。…

VSCode + CMake

参考文献&#xff1a; 如何用 GCC, CMake 和 Make 编译C/C代码Windows 上的 Linux 子系统&#xff1a;WSLWSL&#xff1a;桌面 UI 远程连接 RDP 配置 VScode 文章目录 CMake 配置VSCode 配置launch.jsontask.jsonc_cpp_properties.json CMake 配置 编写如下的 CmakeLists.t…

yolov5学习及手势识别实战

目录 一、YOLOv5核心原理 1. 单阶段检测范式 2. 关键技术特性 二、YOLOv5网络架构组成 1. Backbone&#xff1a;CSPDarknet53 2. Neck&#xff1a;PANet&#xff08;Path Aggregation Network&#xff09; 3. Head&#xff1a;检测头 三、YOLOv5网络架构细节 1. 整体架…

VMware-workstation-17.6.3安装教程

1.下载VMware-workstation-17.6.3软件包 2.安装并输入许可码 3.开始使用

[Linux][经验总结]Ubuntu6.11.0 docker更换镜像源(实操可用的正确方法)

一、前言 关于Ubuntu更换docker镜像源&#xff0c;网上有很多的教程&#xff0c;但在实操中发现&#xff0c;更换的源无法生效——原因是我的docker是在系统安装时&#xff0c;选择附加安装的package的方式安装的。 现将处理过程记录如下。 二、获取镜像源 在网上随便找个几…

Element Plus开发实战指南:快速上手Vue 3企业级组件库

Element Plus全栈开发指南&#xff1a;从入门到企业级实战 一、环境搭建与工程配置1.1 项目初始化&#xff08;Windows/Mac通用&#xff09;1.2 配置文件关键代码 二、主题定制与样式管理2.1 SCSS变量覆盖方案2.2 暗黑模式切换 三、核心组件深度实践3.1 智能表格开发&#xff0…

VIVO手机如何实现证件照换底色?证件照换底色技巧分享

在日常生活中&#xff0c;我们常常需要使用不同底色的证件照&#xff0c;无论是办理证件、提交资料还是其他用途&#xff0c;一张符合要求的证件照都显得尤为重要。 而VIVO手机凭借其强大的拍照功能和便捷的图片编辑工具&#xff0c;为我们提供了一种简单高效的证件照换底色解…

A SURVEY ON POST-TRAINING OF LARGE LANGUAGE MODELS——大型语言模型的训练后优化综述——第一部分

arXiv 2025 摘要 大型语言模型&#xff08;LLMs&#xff09;的出现从根本上改变了自然语言处理&#xff0c;使其在从对话系统到科学研究的各个领域中变得不可或缺。然而&#xff0c;它们的预训练架构在特定情境下经常显示出局限性&#xff0c;包括有限的推理能力、伦理不确定…

深入理解Python闭包与递归:原理、应用与实践

目录 闭包 什么是闭包&#xff1a; 闭包的基本结构&#xff1a; 实现闭包的条件&#xff1a; 1.嵌套函数 2.内函数引用外部函数的变量 3.外部函数返回内部函数 4.外部函数已经执行完毕 递归函数 什么是递归函数&#xff1a; 递归函数条件 1.必须有个明确的结束条…

ABAP PDF预览

画个屏幕 PDF JPG TXT都可以参考预览&#xff0c;把二进制流传递给标准函数就行 *&---------------------------------------------------------------------* *& Report YDEMO2 *&---------------------------------------------------------------------* *&am…