java学习之JSON
0X00前言
JSON可以说是javascript的一种数据类型,我们学习JSON是为了在客户端的数据给读取出来,官方的解释是:概述:JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效
0x01基础使用
(1).概念:javaScript Object Notation javaScript对象表示法
(2).实例:
var p={"name":"张三“,"age":"23",""gender:"男"}
*json现在多用于存储和交换文本信息的语法
*进行数据传输
*JSON比XML更小、更快、更容易解析。
(3).语法:
- 数据在名称/值对中:json数据是由键值对构成的
- 数字(整数或者浮点数)
- 字符串(双引号里面)
- 逻辑值(true or flase)
- 数组(方括里面){"people":[{},{}]}
- 对象 (花括号里面){"address":{"province:"山西"}}
- 键用引号(单双都可以)引起来,也可以不使用
- 数据用逗号分割 多个键值对之间用逗号隔开
- 花括号保存对象
- 方括号保存数据
0x02使用代码
0x1JSON格式
- JSON的格式是多变的,具有很多种嵌套方式,数组嵌套键值对,键值对嵌套数组
- 不同的格式具有在不同场景的实用性
<script>
var person={name:"张三",age:23,gnder:true};
//alert(person);//嵌套
var persons={person:[{name:"张三",age:23,gnder:true},
{name:"钟三",age:23,gnder:true},
{name:"王四",age:65,gender:false}
]
}
var ps=[{name:"张三",age:23,gnder:true},
{name:"钟三",age:23,gnder:true},
{name:"王四",age:65,gender:false}]
</script>
0x2获取JSON对象
json对象.键名
json对象["键名"](这个要加双引号)
数组用索引下标
看一下简单的js代码
<script>
var person={name:"张三",age:23,gnder:true};
//alert(person);//嵌套
var persons={person:[
{name:"张三",age:23,gender:true},
{name:"钟三",age:23,gender:true},
{name:"王四",age:65,gender:false}]
}
var ps=[{name:"张三",age:23,gender:true},
{name:"钟三",age:23,gender:true},
{name:"王四",age:65,gender:false}]
var name=person.name
var person1 = persons.person[1].name;
for (var ket in person){
alert(person[ket])//拿到的是键名name,age,gender
}
//获取ps中所有的值
for (var i=0;i<ps.length;i++){
var p=ps[i];
for (var key in p){
alert(key+":"+p[key]);
}
}
</script>
0x03Java对象转化成json对象
JSON解析器:Jackson
转化方法:wirteValue(参数1,obj);
参数1:
File 将obj对象转化为JSON字符串,并保存到指定文件中
Writer:将obj对象转化成JSON字符串,并将json数据填充到字符输出流里面
OutputStream:将obj对象转化成json字符串,并填充到字节输出流
Writer
writeValueAsString :对象转化成json
代码使用
person对象和前面的对象一样三个键值对,name、age、gender
@Test
public void test() throws IOException {
Person person = new Person();
person.setAge(23);
person.setGender(true);
person.setName("张无");
//创建jackson的核心对象 ObjectMapper
ObjectMapper objectMapper = new ObjectMapper();
String s = objectMapper.writeValueAsString(person);
System.out.println(s);
objectMapper.writeValue(new File("c://testdemo1.txt"),person);
}}
有些时候属性我们会不想要某些属性被js判断出来,可以采用注解的方式去@JacksonInject//忽略该属性,这样就不会被输出出来
或者通过 @JsonFormat(pattern = "yyyy-MM-dd")去修改属性格式。
Person类
public class Person {
private String name;
private int age;
private boolean gender;
@JsonIgnore
private String grifrind;
@JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;
public String getGrifrind() {
return grifrind;
}
public void setGrifrind(String grifrind) {
this.grifrind = grifrind;
}
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 boolean isGender() {
return gender;
}
public void setGender(boolean gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", gender=" + gender +
'}';
}
0x04Json转换成Java对象
转换方法:writeValue(参数1,obj)
把字符串传入readValue函数,然后确定返回的对象类。
public class JSONdemo2 {
@Test
public void test() throws IOException {
String json="{\"name\":\"钟三\",\"age\":44,\"gender\":false,\"birthday\":\"2022-05-27\"}]";
//创建ObjectMapper
ObjectMapper objectMapper = new ObjectMapper();
Person person = objectMapper.readValue(json, Person.class);
System.out.println(person);
}
}
0x05总结
继续冲啊,内容很简单就是一些数据交互,马上就要进入框架的学习了准备沉淀一下。
java学习之JSON的更多相关文章
- Java学习笔记-Json
//先导入gson到lib,add build path //2015年5月5日22:02:37 package com.alfredsun.thread; import com.google.gso ...
- Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法
前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...
- [Java学习] JSON工具学习记录--FastJSON
最近做项目,总是与json打交道,在用了即可json工具后,个人认为fastJson最好用,很方便,API也清晰可见,所以记录下使用方法,给需要的人提供帮助.(部分摘抄自网络) 一.API入口 Fas ...
- Json学习总结(2)——Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson vs. JSONP
JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上它 ...
- Java学习笔记-文件读写和Json数组
Java文件读写 Java中I/O流对文件的读写有很多种方法,百度后主要看了以下三种 第一种方式:使用FileWriter和FileReader,对文件内容按字符读取,代码如下 String dir ...
- java 学习写架构必会几大技术点
java 学习写架构必会几大技术点 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation ...
- Java学习-031-JSON 之五 -- 特定数据获取(JSONObject满足特定键值)
前面几篇博文分别讲述了 JSON 的 概要知识.简单数据获取.封装cssSelector数据获取方法.JSONObject 是否包含 key_value,请自行阅读相关博文. 在日常的接口测试脚本编写 ...
- Java学习-030-JSON 之四 -- 判断 JSONObject 是否包含键值对
前文对获取 JSON 数据封装方法,使之可通过类似于 cssSelector 的方法获取 JSON 数据,使获取数据变得简单.敬请参阅:模仿 cssSelector 封装读取 JSON 数据方法. 在 ...
- Java学习-028-JSON 之二 -- 数据读取
JSON数据由 JSONObject.JSONArray.key_value 组合而成.通常来说,JSONObject 可以包含 JSONObject.JSONArray.key_value:JSON ...
随机推荐
- CSP-S 2020 T4 贪吃蛇 (双队列模拟)
题面 题解 先看数据,T<=10,用平衡树或优先队列是可以拿70分的,大体思路和正解思路是一样的,每次直接修改,然后模拟. 我们模拟的时候,主要是在过程中算出最终被吃的有选择权的蛇的最后选择时刻 ...
- PostgreSQL 与 Oracle 访问分区表执行计划差异
熟悉Oracle 的DBA都知道,Oracle 访问分区表时,对于没有提供分区条件的,也就是在无法使用分区剪枝情况下,优化器会根据全局的统计信息制定执行计划,该执行计划针对所有分区适用.在分析利弊之前 ...
- Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点
Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...
- Windows 11 新材质 Mica Alt 效果展示
本文是 WinUI 3 踩坑记 的一部分,该系列发布于 GitHub@Scighost/WinUI3Keng,若内容出现冲突以 GitHub 上的为准. 微软在 2022-09-02 更新了官方文档, ...
- 继GitHub的Copilot收费后,亚马逊推出了 CodeWhisperer,感觉不错哟!
Copilot 是 Github 推出的一款人工智能编程助手,推出仅一年就受到大量开发者的追捧(据官方统计有 120 万用户).然而,自 2022 年 6 月起,它改为了付费订阅模式(每月 10 美元 ...
- Object.keys的‘诡异’特性,你值得收藏!
先从'诡异'的问题入手 例1: 纯Number类型的属性 const obj = { 1: 1, 6: 6, 3: 3, 2: 2 } console.log('keys', Object.keys( ...
- 【学习笔记】GBDT算法和XGBoost
前言 这一篇内容我学了足足有五个小时,不仅仅是因为内容难以理解, 更是因为前面CART和提升树的概念和算法本质没有深刻理解,基本功不够就总是导致自己的理解会相互在脑子里打架,现在再回过头来,打算好好总 ...
- 第六章:Django 综合篇 - 18:国际化和本地化
所谓的国际化,是指使用不同语言的用户在访问同一个网站页面时能够看到符合其自身语言的文本页面. 国际化的基本原理是: 浏览器通过LANGUAGE_CODE在HTTP请求头中告诉网站后台服务器用户所需要的 ...
- 创建多个节点的集群 - Elastic Stack 8.0
文章转载自:https://mp.weixin.qq.com/s/k6u9Q2nebW9qgZMghQwJng 详述如何安装3个节点的 Elasticsearch 集群.我将使用 Docker 来进行 ...
- k8s中 资源配额 ResourceQuota
文章转载自:https://www.kuboard.cn/learning/k8s-advanced/policy/lr.html 当多个用户(团队)共享一个节点数量有限的集群时,如何在多个用户(团队 ...