当前位置: 首页 > news >正文

咸阳免费做网站广州优化营商环境条例

咸阳免费做网站,广州优化营商环境条例,内蒙古众信国际旅行社电话,辽宁建设工程信息网官网入口官方目录 FastJson 新建一个SpringBoot项目 pom.xml 一、JavaBean与JSON数据相互转换 LoginController FastJsonApplication启动类 ​编辑二、FastJson的JSONField注解 Log实体类 TestLog测试类 三、FastJson对JSON数据的增、删、改、查 TestCrud FastJson 1、JSON使用手册…

目录

FastJson

新建一个SpringBoot项目

pom.xml

一、JavaBean与JSON数据相互转换

LoginController

 FastJsonApplication启动类

​编辑二、FastJson的@JSONField注解

Log实体类

 TestLog测试类

三、FastJson对JSON数据的增、删、改、查

TestCrud


FastJson

  • 1、JSON使用手册:JSON 教程 | 菜鸟教程 (runoob.com)
  • 2、FastJson官方文档:Quick Start CN · alibaba/fastjson Wiki (github.com)
  • 3、
  • JSON(JavaScript Object Notation, JavaScript 对象标记法),是一种轻量级的数据交换格式。
  • 对于一个前后端分离的SpringBoot项目而言,前端需要的是以“键:值”结构保存的JSON数据,后端需要的是JavaBean。所以出现了两种JSON解析库,把它们转来转去,以便前后端进行数据交流:
    • 1、Spring Boot内置的Jackson(适合场景复杂、业务量大的项目)
    • 2、阿里巴巴开发的FastJson(适合数据量小、并发量小的项目)
  • FastJson是JSON解析库,用于转换JavaBean和JSON数据
    • 序列化(将Java对象转换为JSON字符串)
    • 反序列化(将JSON字符串转换为Java对象)

    • String text = JSON.toJSONString(obj); //序列化
      VO vo = JSON.parseObject("{...}", VO.class); //反序列化
      //VO:与JSON数据对应的实体类
  • @JSONField注解:
    • 当你需要更精确地控制Java对象的字段在序列化和反序列化过程中的行为时,可以使用@JSONField注解
    • @JSONField注解可以用于声明类、属性或方法
    • 该注解可以让人重新定制序列化规则 
  • 增删改查:
    • FastJSON将JSON数据分成“对象”和“数组”两种形式,
    • 把对象节点封装成JSONObject类,
    • 把数组节点封装成JSONArray类,
    • 然后利用这两个类对JSON数据进行增、删、改查操作

新建一个SpringBoot项目

 

项目结构:

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.study</groupId><artifactId>fastJson</artifactId><version>0.0.1-SNAPSHOT</version><name>fastJson</name><description>Demo project for Spring Boot</description><properties><java.version>8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--添加FastJSON依赖--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.28</version></dependency><!--使用@Test注解--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

一、JavaBean与JSON数据相互转换

LoginController

  • 接收前端发来的JSON数据,返回JSON登录结果
package com.study.fastJson.controller;import com.alibaba.fastjson.JSON;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;/*** 接收前端发来的JSON数据,返回JSON登录结果*/
@RestController
public class LoginController {@RequestMapping("/login")public String login(@RequestBody String json){//将请求体中的字符串以JSON格式读取并转换为Map键值对象Map loginDate=JSON.parseObject(json,Map.class);//读取JSON中的账号String username=loginDate.get("username").toString();//读取JSON中的密码String password=loginDate.get("password").toString();HashMap<String, String> result = new HashMap<>();//返回的响应码String code="";//返回的响应信息String message="";if("mr".equals(username) && "123456".equals(password)){code="200";message="登录成功";}else{code="500";message="账号或密码错误";}//将响应码和响应信息保存到result响应结果中result.put("code",code);result.put("message",message);//将键值对象转换为以"键:值"结构保存的JSON数据并返回return JSON.toJSONString(result);}
}

 FastJsonApplication启动类

package com.study.fastJson;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class FastJsonApplication {public static void main(String[] args) {SpringApplication.run(FastJsonApplication.class, args);}}

 启动启动类,使用postman进行测试

二、FastJson的@JSONField注解

Log实体类

@JSONField注解的几个重要属性:

  • name
  • serialize
  • format
  • ordinal
package com.study.fastJson.entity;import com.alibaba.fastjson.annotation.JSONField;import java.util.Date;/*** @JSONField注解的各种常见用法*/
public class Log {//ordinal用于定义不同属性被转换后的JSON数据中的排列顺序,值越大越靠后@JSONField(ordinal = 0,name="code")//为该属性定义别名"code"private String id;@JSONField(ordinal = 1,serialize = false)//该属性不会被序列化,即不显示public String message;@JSONField(ordinal = 2,format = "yyyy-MM-dd HH:mm:ss")//定义该属性序列化时的日期格式public Date create;public Log() {}public Log(String message,  Date create, String id) {this.message = message;this.create = create;this.id = id;}//Getter(),Setter()方法省略
}

 TestLog测试类

package com.study.fastJson.entity;import com.alibaba.fastjson.JSON;
import org.junit.Test;import java.util.Date;public class TestLog {/***  @JSONField(name="code")* 定义属性的别名,以别名使用该属性*/@Testpublic void testName(){Log log = new Log();log.setId("404");System.out.println(JSON.toJSONString(log));}/*** @JSONField(format = "yyyy-MM-dd HH:mm:ss")* 当Log对象被转换为JSON数据时,会自动按照@JSONField注解定义的日期格式进行转换*/@Testpublic void testDateFormat(){Log log = new Log();log.create=new Date();System.out.println(JSON.toJSONString(log));}/*** @JSONField(serialize = false)* id属性不会被序列化*/@Testpublic void testSerialize(){Log log = new Log();log.setId("404");log.message="找不到资源";System.out.println(JSON.toJSONString(log));}/***  @JSONField(ordinal = 0)*  ordinal用于定义不同属性被转换后的JSON数据中的排列顺序,值越大越靠后*/@Testpublic void testOrder(){Log log = new Log("找不到资源",new Date(),"404");System.out.println(JSON.toJSONString(log));}
}

三、FastJson对JSON数据的增、删、改、查

TestCrud

package com.study.fastJson;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.junit.Test;/*** 使用JSONObject类和JSONArray类对JSON数据进行增删改查操作*/
public class TestCrud {/*** 查询数据* 使用get()方法查询*/@Testpublic void getJson(){String json="{\"name\":\"张三\",\"age\":25,\"qq\":[\"123456789\",\"987654321\"],"+"\"scores\":{\"chinese\":90,\"math\":85}}";//获取以"键:值"结构保存的JSON数据的对象节点JSONObject root= JSON.parseObject(json);//查询指定字段对应的值String name=root.getString("name");int age=root.getIntValue("age");System.out.println("姓名:"+name+",年龄:"+age);//获取JSON数组中的值JSONArray arr=root.getJSONArray("qq");String firstQQ=arr.getString(0);System.out.println(firstQQ);//获取JSON子节点中的数据JSONObject scores=root.getJSONObject("scores");int math=scores.getIntValue("math");System.out.println("数学成绩为:"+math);}/*** 增加数据* 对象节点使用put()节点增加,数组节点使用add()方法增加*/@Testpublic void addJson(){String json="{\"name\":\"张三\",\"age\":25,\"qq\":[\"123456789\",\"987654321\"],"+"\"scores\":{\"chinese\":90,\"math\":85}}";//获取以"键:值"结构保存的JSON数据的对象节点JSONObject root= JSON.parseObject(json);root.put("sex","男");root.getJSONArray("qq").add("999999");root.getJSONObject("scores").put("english",92);System.out.println(root.toJSONString());}/*** 修改数据* 对象节点使用put()方法修改,数组节点使用set()方法修改*/@Testpublic void updateJson(){String json="{\"name\":\"张三\",\"age\":25,\"qq\":[\"123456789\",\"987654321\"],"+"\"scores\":{\"chinese\":90,\"math\":85}}";//获取以"键:值"结构保存的JSON数据的对象节点JSONObject root= JSON.parseObject(json);root.put("name","李四");//名字改成李四root.getJSONArray("qq").set(1,"000000");//将第二个qq号改成000000root.getJSONObject("scores").put("math",70);//数学成绩改成70System.out.println(root.toJSONString());}/*** 删除数据* 对象节点和数组节点都使用remove()方法删除*/@Testpublic void removeJson(){String json="{\"name\":\"张三\",\"age\":25,\"qq\":[\"123456789\",\"987654321\"],"+"\"scores\":{\"chinese\":90,\"math\":85}}";//获取以"键:值"结构保存的JSON数据的对象节点JSONObject root= JSON.parseObject(json);root.remove("age");//删除年龄字段root.getJSONArray("qq").remove(0);//删除第一个qq号root.getJSONObject("scores").remove("chinese");//删除语文成绩System.out.println(root.toJSONString());}
}
http://www.dt0577.cn/news/13391.html

相关文章:

  • Wordpress炫酷特效深圳关键词优化公司哪家好
  • 淘宝上做进出口网站有哪些seo培训
  • 小程序就是做网站站长工具端口查询
  • 建网站深圳百度上的广告多少钱一个月
  • 快速学做网站2024年重启核酸
  • 给网站增加功能怎么做腾讯新闻潍坊疫情
  • 罗田做网站职业培训机构需要什么资质
  • 蕲春做网站免费搭建网站的软件
  • 商标查询官方入口seo sem
  • 做韦恩图的在线网站营销方法
  • wordpress安装后做什么免费网站建设seo
  • 常州网站制作套餐百度首页精简版
  • 网站推广专家b2b平台有哪几个
  • 新网站建设咨询宣传软文是什么意思
  • 营销型网站建设定制百度推广软件
  • 网站建设与策划试卷如何做seo优化
  • 自己做的网站怎样弄网上seo快排软件
  • 怎样注册网站做销售网站入口
  • 专门做图表的网站百度推广广告收费标准
  • 娄底网站开发跨境电商平台
  • wordpress 付费主题 时间百度官网优化
  • 网站展示模板网站推广苏州
  • 临沂做网站的公司长春建站服务
  • 帝国网站系统做专题百度健康人工客服电话24小时
  • 唐山网站建设价格小学生抄写新闻20字
  • 东莞市住房和城乡建设局门户网站免费域名注册永久
  • 临淄网站制作深圳seo排名
  • 机电建设有限公司网站软文营销文案
  • 哈尔滨建工建设集团优化清理大师
  • 北京企业网站建设公司宣传推广图片