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

仙居做网站的浙江省的网站建设公司有哪些

仙居做网站的,浙江省的网站建设公司有哪些,要怎么制作网站,登陆网站取消备案一、概述 Gson是google提供的用来操作json数据的一个非常好用的类库。其使用范围非常的广泛#xff0c;所以非常有必要对其进行系统的学习。 json是一种数据格式#xff0c;确切的说是一种文本数据格式。其在网络通讯过程中的作用非常的明显。 目前大多数的网络通讯格式已经从… 一、概述 Gson是google提供的用来操作json数据的一个非常好用的类库。其使用范围非常的广泛所以非常有必要对其进行系统的学习。 json是一种数据格式确切的说是一种文本数据格式。其在网络通讯过程中的作用非常的明显。 目前大多数的网络通讯格式已经从xml替换为json格式。 其提供了序列化和反序列化的功能。在我们进行网络开发的过程中通常会把参数封装成json格式传给后台后台解析后的返回结果也会封装成json格式返回给调用者。 1.如何创建一个Gson对象 /*** 创建Gson对象的两种形式*/private void createGsonObject() {//第一种方式Gson gson new Gson();//第二种方式Gson gson1 new GsonBuilder().create();//方式二除了可以创建一个Gson对象以外还可以进行多项配置,例如设置日期的格式化 // 例如 new GsonBuilder().setDateFormat(yyyy-MM-dd);}2.如何创建一个JsonObject /*** 如何创建一个json对象*/private void createJsonObject() {JsonObject jsonObject new JsonObject();jsonObject.addProperty(id, 1);//给jsonObject创建一个id属性值为1jsonObject.addProperty(bookName, 《深入Java虚拟机》);jsonObject.addProperty(bookPrice, 36.8);jsonObject.addProperty(bookColor, 红色);//打印Json字符串System.out.println(jsonObject.toString());//给JsonObject添加对象JsonObject jsonObject1 new JsonObject();jsonObject1.addProperty(chapterId, 1);jsonObject1.addProperty(chapterName, 第一章);//给JsonObject添加实体对象jsonObject.add(chapter, jsonObject1);System.out.println(jsonObject.toString());/*** 输出结果* {id:1,bookName:《深入Java虚拟机》,bookPrice:36.8,bookColor:红色}* {id:1,bookName:《深入Java虚拟机》,bookPrice:36.8,bookColor:红色,chapter:{chapterId:1,chapterName:第一章}}*/}注这里的JsonObject表示我们一样可以创建一个json对象但是我们后面一般使用的是java对象跟json字符串的转换可以用通过创建好的gson对象来操作。 3.数组的序列化与反序列化 /*** 根据一个json创建一个数组*/private void createJsonArray() {//把数组转换为Json字符串String[] str new String[]{《深入Java虚拟机》, 《Android插件编程》, 《OpenCV全解》};Gson gson new Gson();String jsonStr gson.toJson(str);//先创建一个Json字符串System.out.println(jsonStr);//输出//把Json字符串转换为Json数组String[] strArray gson.fromJson(jsonStr, String[].class);for (String s : strArray) {System.out.println(s);}/*** 输出结果* [《深入Java虚拟机》,《Android插件编程》,《OpenCV全解》]* 《深入Java虚拟机》* 《Android插件编程》* 《OpenCV全解》*/}4.List的序列化与反序列化 /*** 根据一个json创建一个list*/private void createJsonToList() {//将list集合转换为json字符串ListBook books new ArrayList();books.add(new Book(1, 《深入Java虚拟机》));books.add(new Book(2, 《OpenCV进阶》));books.add(new Book(3, 《深入Android源代码》));Gson gson new Gson();String jsonListStr gson.toJson(books);System.out.println(jsonListStr);//将json字符串转换为list集合//获取泛型的类型Type type new TypeTokenListBook() {}.getType();//使用gson将字符串转换为泛型集合即ListBookListBook books1 gson.fromJson(jsonListStr, type);for (Book book : books1) {System.out.println(book.getName());}/*** 输出结果* [{id:1,name:《深入Java虚拟机》},{id:2,name:《OpenCV进阶》},{id:3,name:《深入Android源代码》}]* 《深入Java虚拟机》* 《OpenCV进阶》* 《深入Android源代码》*/}注 //获取泛型的类型 Type type new TypeTokenListBook() {}.getType();*5.序列化与反序列化综合例子基于Book对象 public class Book {public Book(){}private String id;/*** 加上SerializedName注解后服务端api返回bookName、Name、bn时客户端都能够拿到正确的值给name属性。*/SerializedName(value bookName,alternate {Name,bn})private String name;public Book(String id, String name) {this.id id;this.name name;} }/*** json的序列化与反序列化* 使用toJson实现序列化使用fromJson实现反序列化*/private void jsonSeriaReSeria() {Gson gson new Gson();Book book new Book(1, 《深入Java虚拟机》);//将book类序列化成字符串String bookStr gson.toJson(book);System.out.println(bookStr);//将bookStr反序列化成为Book类Book b gson.fromJson(bookStr, Book.class);System.out.println(b.getName());}6.如何为属性做兼容性处理重命名、预设名称等 /*** 如何给json属性重命名* 假设我们有这样一个需求由于接口改版从服务端返回的api中的book字段的name属性变为了bookName。如果我们* 仍然用name进行解析则接不到bookName的值而由于服务端没有返回name则解析后namenull。如果要考虑到兼容性那么我们的的Book类的属性就* 需要做一下兼容性的处理。* 使用SerializedName可以给属性重命名。用SerializedName的alternate属性给Book的属性做扩展*/private void reNameProperty() {String bookJson {\id\:\1\,\bookName\:\《深入Java虚拟机》\};Gson gson new Gson();Book book gson.fromJson(bookJson, Book.class);System.out.println(book.getName());}注SerializedName(value “bookName”,alternate {“Name”,“bn”})表示在反序列化时候可以使用bookName,Name,bn都可以被识别到set到Book中的name属性相应的在序列化的时候name属性会被序列化为bookName字符串 7.GsonBuilder的一些基础配置 /*** 对GsonBuilder一些属性介绍*/private void gsonBuilderProperty() {Gson gson new GsonBuilder().serializeNulls()//默认情况下如果某一个属性为null那么此属性不会参与序列化和反序列化的过程加上此属性后会参与序列化和反序列化的过程.setPrettyPrinting()//格式化json字符串的输出默认情况下是输出一行经过这个属性设置后会格式化输出即有缩进的输出.setDateFormat(yyyy-MM-dd HH:mm:ss)//对时间进行格式化.create();}8.TypeAdapter使用方法介绍 /*** typeAdapter的使用方法* TypeAdapter是一个泛型抽象类用于接管某种类型的序列化和反序列化的过程* 它包含两个抽象方法write和read分别用于自定义的序列化和反序列化的过程*/private void useTypeAdapter() {Gson gson new GsonBuilder().registerTypeAdapter(Book.class,new BookTypeAdapter()).create();Book book new Book(1,深入Java虚拟机);System.out.println(gson.toJson(book));String bookJson {\Id\:\1\,\Name\:\《深入Java虚拟机》\};Book book1 gson.fromJson(bookJson,Book.class);System.out.println(gson.toJson(book1));}以下是BookTypeAdapter的代码介绍package com.yw.gsonlib;import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter;import java.io.IOException;public class BookTypeAdapter extends TypeAdapterBook {/*** 序列化接口** param jsonWriter* param book* throws IOException*/Overridepublic void write(JsonWriter jsonWriter, Book book) throws IOException {//流式序列化对象开始jsonWriter.beginObject();//将Json的key值都指定为首字母大写jsonWriter.name(Id).value(book.getId());jsonWriter.name(Name).value(book.getName());//流式序列化对象结束jsonWriter.endObject();}/*** 反序列化接口** param jsonReader* return* throws IOException*/Overridepublic Book read(JsonReader jsonReader) throws IOException {Book book new Book();//流式反序列化开始jsonReader.beginObject();while (jsonReader.hasNext()) {switch (jsonReader.nextName()) {case id:case Id:book.setId(jsonReader.nextString());break;case name:case Name:book.setName(jsonReader.nextString());break;}}//流式反序列化结束jsonReader.endObject();return book;} }Gson 工具类 package com.utils;import com.google.gson.*; import com.google.gson.reflect.TypeToken;import java.util.ArrayList; import java.util.List; import java.util.Map;public class GsonUtils {//不用创建对象,直接使用Gson.就可以调用方法private static Gson gson null;//判断gson对象是否存在了,不存在则创建对象static {if (gson null) {//gson new Gson();// 当使用GsonBuilder方式时属性为空的时候输出来的json字符串是有键值key的,显示形式是key:null而直接new出来的就没有key:null的gson new GsonBuilder().setDateFormat(yyyy-MM-dd HH:mm:ss).create();}}//无参的私有构造方法private GsonUtils() {}/*** 将对象转成json格式** param object* return String*/public static String GsonString(Object object) {String gsonString null;if (gson ! null) {gsonString gson.toJson(object);}return gsonString;}/*** 将json转成特定的cls的对象** param gsonString* return*/public static T T GsonToBean(String gsonString, ClassT cls) {T t null;if (gson ! null) {//传入json对象和对象类型,将json转成对象t gson.fromJson(gsonString, cls);}return t;}/*** json字符串转成list** param gsonString* return*/public static T ListT GsonToList(String gsonString, ClassT cls) {ListT list null;if (gson ! null) {//根据泛型返回解析指定的类型,TypeTokenListT{}.getType()获取返回类型list gson.fromJson(gsonString, new TypeTokenListT() {}.getType());}return list;}/*** json字符串转成list** param json* return*/public static T ListT jsonToList(String json, ClassT cls) {ArrayListT mList new ArrayListT();JsonArray array new JsonParser().parse(json).getAsJsonArray();for (final JsonElement elem : array) {mList.add(gson.fromJson(elem, cls));}return mList;}/*** json字符串转成数组** param json* return*/public static Object[] json2ObjectArray(String json, Class cls) {TypeToken? array TypeToken.getArray(cls);Gson gson new Gson();Object[] objects gson.fromJson(json, array.getType());return objects;}/*** json字符串转成list中有map的** param gsonString* return*/public static T ListMapString, T GsonToListMaps(String gsonString) {ListMapString, T list null;if (gson ! null) {list gson.fromJson(gsonString,new TypeTokenListMapString, T() {}.getType());}return list;}/*** json字符串转成map的** param gsonString* return*/public static T MapString, T GsonToMaps(String gsonString) {MapString, T map null;if (gson ! null) {map gson.fromJson(gsonString, new TypeTokenMapString, T() {}.getType());}return map;} }注意 项目中要求不要使用Fastjson原因Fastjson存在安全漏洞 经查阅资料Fastjson≤1.2.80的版本存在安全漏洞 Gson工具类 import com.google.gson.*; import com.google.gson.reflect.TypeToken; import lombok.SneakyThrows;import java.lang.reflect.Type; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Map; import java.util.Objects;public class GsonUtils {private static final DateTimeFormatter dateTimeFormatter DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss);private static final DateTimeFormatter dateFormatter DateTimeFormatter.ofPattern(yyyy-MM-dd);private static final DateTimeFormatter timeFormatter DateTimeFormatter.ofPattern(HH:mm:ss);private static final JsonSerializerLocalDateTime dateTimeSerializer (obj, type, ctx) - new JsonPrimitive(dateTimeFormatter.format(obj));private static final JsonSerializerLocalDate dateSerializer (obj, type, ctx) - new JsonPrimitive(dateFormatter.format(obj));private static final JsonSerializerLocalTime timeSerializer (obj, type, ctx) - new JsonPrimitive(timeFormatter.format(obj));private static final JsonDeserializerLocalDateTime dateTimeDeserializer (json, type, ctx) - LocalDateTime.parse(json.getAsJsonPrimitive().getAsString(), dateTimeFormatter);private static final JsonDeserializerLocalDate dateDeserializer (json, type, ctx) - LocalDate.parse(json.getAsJsonPrimitive().getAsString(), dateFormatter);private static final JsonDeserializerLocalTime timeDeserializer (json, type, ctx) - LocalTime.parse(json.getAsJsonPrimitive().getAsString(), timeFormatter);private static final Gson gson;static {GsonBuilder builder new GsonBuilder();builder.disableHtmlEscaping();builder.enableComplexMapKeySerialization();// builder.excludeFieldsWithoutExposeAnnotation();builder.setDateFormat(yyyy-MM-dd HH:mm:ss);builder.registerTypeAdapter(LocalDateTime.class, dateTimeSerializer);builder.registerTypeAdapter(LocalDate.class, dateSerializer);builder.registerTypeAdapter(LocalTime.class, timeSerializer);builder.registerTypeAdapter(LocalDateTime.class, dateTimeDeserializer);builder.registerTypeAdapter(LocalDate.class, dateDeserializer);builder.registerTypeAdapter(LocalTime.class, timeDeserializer);gson builder.create();}public static Type makeJavaType(Type rawType, Type... typeArguments) {return TypeToken.getParameterized(rawType, typeArguments).getType();}public static String toString(Object value) {if (Objects.isNull(value)) {return null;}if (value instanceof String) {return (String) value;}return toJSONString(value);}public static String toJSONString(Object value) {return gson.toJson(value);}public static String toPrettyString(Object value) {return gson.newBuilder().setPrettyPrinting().create().toJson(value);}public static JsonElement fromJavaObject(Object value) {JsonElement result null;if (Objects.nonNull(value) (value instanceof String)) {result parseObject((String) value);} else {result gson.toJsonTree(value);}return result;}SneakyThrowspublic static JsonElement parseObject(String content) {return JsonParser.parseString(content);}public static JsonElement getJsonElement(JsonObject node, String name) {return node.get(name);}public static JsonElement getJsonElement(JsonArray node, int index) {return node.get(index);}SneakyThrowspublic static T T toJavaObject(JsonElement node, ClassT clazz) {return gson.fromJson(node, clazz);}SneakyThrowspublic static T T toJavaObject(JsonElement node, Type type) {return gson.fromJson(node, type);}public static T T toJavaObject(JsonElement node, TypeToken? typeToken) {return toJavaObject(node, typeToken.getType());}public static E ListE toJavaList(JsonElement node, ClassE clazz) {return toJavaObject(node, makeJavaType(List.class, clazz));}public static ListObject toJavaList(JsonElement node) {return toJavaObject(node, new TypeTokenListObject(){}.getType());}public static V MapString, V toJavaMap(JsonElement node, ClassV clazz) {return toJavaObject(node, makeJavaType(Map.class, String.class, clazz));}public static MapString, Object toJavaMap(JsonElement node) {return toJavaObject(node, new TypeTokenMapString, Object(){}.getType());}SneakyThrowspublic static T T toJavaObject(String content, ClassT clazz) {return gson.fromJson(content, clazz);}SneakyThrowspublic static T T toJavaObject(String content, Type type) {return gson.fromJson(content, type);}public static T T toJavaObject(String content, TypeToken? typeToken) {return toJavaObject(content, typeToken.getType());}public static E ListE toJavaList(String content, ClassE clazz) {return toJavaObject(content, makeJavaType(List.class, clazz));}public static ListObject toJavaList(String content) {return toJavaObject(content, new TypeTokenListObject(){}.getType());}public static V MapString, V toJavaMap(String content, ClassV clazz) {return toJavaObject(content, makeJavaType(Map.class, String.class, clazz));}public static MapString, Object toJavaMap(String content) {return toJavaObject(content, new TypeTokenMapString, Object(){}.getType());}}
http://www.pierceye.com/news/67232/

相关文章:

  • 建设一个网站需要哪些步骤哪里医院做无痛人流便宜 咨询网站在线
  • 网站移动端适配怎么做做网站比较专业的公司
  • 门户网站建设工作讲话小微平台
  • 百度网站降权网站开发成都
  • 公司网站的主页优化网站制作简单模版
  • 网站禁止火车头采集深圳龙华房价2022最新房价
  • 制作个人网站实例有了ddns怎么建设网站
  • 东莞网站建设排名遵义市 网站建设
  • 电商网站开发目的深圳物流公司招聘
  • 能够做简历的网站网页源代码怎么调出来
  • 如何建立一个网站视频教学360提交入口网址
  • 丽水建设公司网站ppt模板免费下载素材小清新
  • 办文明网站做文明网民活动方案烟台企业网站开发
  • 郑州网站公司电子工程师网名
  • 梅州市住房和城乡建设局官方网站企业网站的建设有哪些经典问题
  • 网页和网站的概念wordpress 微信缩略图不显示图片
  • 购物网站开发案例下载wordpress 允许评论
  • 网站服务器租用怎样收费威廉网站建设
  • wordpress站群系统搜索引擎优化的方法与技巧
  • 做旧工艺品网站浦项建设公司员工网站
  • 重庆技术网站建设桃子网站
  • 福田做商城网站建设哪家服务周到专题网站建设总要求
  • 网站改版换了域名网销网站建设流程
  • 怎样重启网站服务器见网站建设客户技巧
  • 免费建站网站 seo建个好网站
  • 建站优化是什么网站不兼容怎么办
  • 网站框架代码遂溪 网站
  • asp 做购物网站江苏国龙翔建设有限公司网站
  • 网站开发费入什么科目wordpress广告设置
  • 成都哪家做网站做的好淮北市官网