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).语法:

  1. 数据在名称/值对中:json数据是由键值对构成的

    1. 数字(整数或者浮点数)
    2. 字符串(双引号里面)
    3. 逻辑值(true or flase)
    4. 数组(方括里面){"people":[{},{}]}
    5. 对象 (花括号里面){"address":{"province:"山西"}}
  2. 键用引号(单双都可以)引起来,也可以不使用
  3. 数据用逗号分割 多个键值对之间用逗号隔开
  4. 花括号保存对象
  5. 方括号保存数据

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对象

  1. json对象.键名

  2. json对象["键名"](这个要加双引号)

  3. 数组用索引下标

    看一下简单的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的更多相关文章

  1. Java学习笔记-Json

    //先导入gson到lib,add build path //2015年5月5日22:02:37 package com.alfredsun.thread; import com.google.gso ...

  2. Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法

    前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...

  3. [Java学习] JSON工具学习记录--FastJSON

    最近做项目,总是与json打交道,在用了即可json工具后,个人认为fastJson最好用,很方便,API也清晰可见,所以记录下使用方法,给需要的人提供帮助.(部分摘抄自网络) 一.API入口 Fas ...

  4. Json学习总结(2)——Java 下的 JSON库性能比较:JSON.simple vs. GSON vs. Jackson vs. JSONP

    JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上它 ...

  5. Java学习笔记-文件读写和Json数组

    Java文件读写 Java中I/O流对文件的读写有很多种方法,百度后主要看了以下三种 第一种方式:使用FileWriter和FileReader,对文件内容按字符读取,代码如下 String dir ...

  6. java 学习写架构必会几大技术点

    java 学习写架构必会几大技术点 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation ...

  7. Java学习-031-JSON 之五 -- 特定数据获取(JSONObject满足特定键值)

    前面几篇博文分别讲述了 JSON 的 概要知识.简单数据获取.封装cssSelector数据获取方法.JSONObject 是否包含 key_value,请自行阅读相关博文. 在日常的接口测试脚本编写 ...

  8. Java学习-030-JSON 之四 -- 判断 JSONObject 是否包含键值对

    前文对获取 JSON 数据封装方法,使之可通过类似于 cssSelector 的方法获取 JSON 数据,使获取数据变得简单.敬请参阅:模仿 cssSelector 封装读取 JSON 数据方法. 在 ...

  9. Java学习-028-JSON 之二 -- 数据读取

    JSON数据由 JSONObject.JSONArray.key_value 组合而成.通常来说,JSONObject 可以包含 JSONObject.JSONArray.key_value:JSON ...

随机推荐

  1. [CF1536F] Omkar and Akmar(博弈论?组合数学)

    题面 [CF1536F] Omkar and Akmar 甲乙轮流在一个有 N N N 个位置的环上放字母(环上每个位置不同),每次可以放一个 A 或 B ,要求不能有相同的字母相邻,轮到某个人时不能 ...

  2. Jenkins JNLP方式启动 Agent

    Jenkins Server配置 如果你是通过Nginx代理了jenkins,那么需要调整下Nginx的配置 map $http_upgrade $connection_upgrade { defau ...

  3. KingbaseES V8R6 维护管理案例之---Kstudio在CentOS 7启动故障

    ​ 案例说明: 在CentOS 7上安装KingbaseES V8R6C006数据库后,启动Kstudio图形界面启动失败,gtk动态库加载失败,安装gtk相关动态库后,问题解决. 适用版本: Kin ...

  4. Spark 读Hive并写入HBase

    package com.grady import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.c ...

  5. 【微服务】Nacos初体验

    SpringCloud - Nacos初体验 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长 ...

  6. Django 之复制粘贴必备命令(补)

    一.Django 常用命令 pip install django==3.2 pip show django pip list django-admin startproject mysite pyth ...

  7. day03-3私聊功能

    多用户即时通讯系统03 4.编码实现02 4.4功能实现-私聊功能实现 4.4.1思路分析 客户端 - 发送者: 用户在控制台输入信息,客户端接收内容 将消息构建成Messgae对象,通过对应的soc ...

  8. Beats: Filebeat和pipleline processors

    简要来说: 使用filebeat读取log日志,在filebeat.yml中先一步处理日志中的个别数据,比如丢弃某些数据项,增加某些数据项. 按照之前的文档,是在filebeat.yml中操作的,具体 ...

  9. rook-ceph说明

    cluster.yaml文件 文件中有几个地方要注意: dataDirHostPath: 这个路径是会在宿主机上生成的,保存的是ceph的相关的配置文件,再重新生成集群的时候要确保这个目录为空,否则m ...

  10. Linux、Windows下Redis的安装即Redis的基本使用详解

    前言 什么是Redis Redis是一个基于内存的key-value结构数据库.Redis 是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母 ...