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

优化网站技术做搜狗网站点

优化网站技术,做搜狗网站点,企业网页设计费用,网站后台更新图片一、思考 假设给一个java bean#xff0c;让你按照 json 的格式打印出来#xff0c;你会怎么做#xff1f; 比如这个java bean 长这样#xff0c;并且创建了一个叫宝儿姐的朋友 package com.test;public class User {private String name;private Integer age;private Bi…一、思考 假设给一个java bean让你按照 json 的格式打印出来你会怎么做 比如这个java bean 长这样并且创建了一个叫宝儿姐的朋友 package com.test;public class User {private String name;private Integer age;private BigDecimal mony;private ListUser childs;public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public BigDecimal getMony() {return mony;}public void setMony(BigDecimal mony) {this.mony mony;}public ListUser getChilds() {return childs;}public void setChilds(ListUser childs) {this.childs childs;} }public class JsonTest {public static void main(String[] args) throws Exception {User user new User();user.setAge(18);user.setName(宝儿姐);user.setMony(new BigDecimal(-4000000.5));ListUser userList new ArrayList();User son new User();son.setAge(1);son.setName(大壮);userList.add(son);User daughter new User();daughter.setAge(10);daughter.setName(小美);userList.add(daughter);user.setChilds(userList);// 打印java beanprintToJson(user);// 打印集合printToJson(userList);// 打印数值printToJson(new BigDecimal(1.235));printToJson((byte)2);printToJson((short)3);printToJson(4);printToJson(5.1F);printToJson(5.2D);printToJson(233L);// 打印字符串printToJson(小美);}private static void printToJson(User user) {// .....} } 我们调用 printToJson 之后期望的输出是长这样的 {name:宝儿姐,childs:[{name:大壮,age:1},{name:小美,age:10}],age:18,mony:-4000000.5} [{name:大壮,age:1},{name:小美,age:10}] 1.235 2 3 4 5.1 5.2 233 小美那么一个简单而又没啥设计的实现方式如下 public class JsonTest {public static void main(String[] args) throws Exception {User user new User();user.setAge(18);user.setName(宝儿姐);user.setMony(new BigDecimal(-4000000.5));ListUser userList new ArrayList();User son new User();son.setAge(1);son.setName(大壮);userList.add(son);User daughter new User();daughter.setAge(10);daughter.setName(小美);userList.add(daughter);user.setChilds(userList);// 打印java beanprintToJson(user);// 打印集合printToJson(userList);// 打印数值printToJson(new BigDecimal(1.235));printToJson((byte)2);printToJson((short)3);printToJson(4);printToJson(5.1F);printToJson(5.2D);printToJson(233L);// 打印字符串printToJson(小美);}private static T void printToJson(T obj) throws Exception {if (Objects.isNull(obj)) {System.out.println();return;}Class? tClass obj.getClass();StringWriter stringWriter new StringWriter();if (tClass String.class) {stringPrint(stringWriter, (String) obj);} else if (Number.class.isAssignableFrom(tClass)) {numberPrint(stringWriter, (Number) obj);} else if (Collection.class.isAssignableFrom(tClass)) {collectionPrint(stringWriter, (Collection) obj, null);// 省略数组map等各种类型的打印} else {javaBeanPrint(stringWriter, obj, tClass);}System.out.println(stringWriter.toString());}private static void javaBeanPrint(StringWriter stringWriter, Object javaBean, Class? tClass) throws Exception {// 不考虑继承Method[] methods tClass.getDeclaredMethods();if (Objects.isNull(methods) || methods.length 0) {stringWriter.append({});return;}stringWriter.append({);boolean hasPrev false;for (Method method : methods) {String methodName method.getName();if (methodName.startsWith(get) methodName.length() 3) {Object val method.invoke(javaBean);if (Objects.isNull(val)) {continue;}if (hasPrev) {stringWriter.append(,);}String propertyName methodName.substring(3);String newPropertyName;if (propertyName.length() 1) {newPropertyName propertyName.substring(0, 1).toLowerCase() propertyName.substring(1);} else {newPropertyName propertyName.substring(0, 1).toLowerCase();}stringWriter.append(\).append(newPropertyName).append(\).append(:);Class? returnType method.getReturnType();if (returnType String.class) {stringPrint(stringWriter, (String) val);} else if (Number.class.isAssignableFrom(returnType)) {numberPrint(stringWriter, (Number) val);} else if (Collection.class.isAssignableFrom(returnType)) {Type type method.getGenericReturnType();collectionPrint(stringWriter, (Collection) val, type);// 省略数组map等各种类型的打印} else {javaBeanPrint(stringWriter, val, val.getClass());}hasPrev true;}}stringWriter.append(});}private static void stringPrint(StringWriter stringWriter, String val) {stringWriter.append(\).append(val).append(\);}private static void numberPrint(StringWriter stringWriter, Number val) {if (val instanceof BigDecimal) {stringWriter.append(((BigDecimal) val).toPlainString());} else {stringWriter.append(val.toString());}}private static void collectionPrint(StringWriter stringWriter, Collection val, Type type) throws Exception {if(Objects.isNull(val) || val.size() 0) {stringWriter.append([]);return;}stringWriter.append([);boolean havPrev false;for (Object v : val) {if(Objects.isNull(v)) {continue;}if(havPrev) {stringWriter.append(,);}Class? vClass v.getClass();if (vClass String.class) {stringPrint(stringWriter, (String) v);} else if (Number.class.isAssignableFrom(vClass)) {numberPrint(stringWriter, (Number) v);} else if (Collection.class.isAssignableFrom(vClass)) {collectionPrint(stringWriter, (Collection) v, type);// 省略数组map等各种类型的打印} else {javaBeanPrint(stringWriter, v, vClass);}havPrev true;}stringWriter.append(]);} }以上是一个非常简单的实现我们可以看到针对每种数据类型它的序列化方式是不一样的所以其实 我们可以使用策略模式加以改造比如定义一个接口加一个参数上下文根据不同的数据类型实现 不同的序列化器。
http://www.hkea.cn/news/14559254/

相关文章:

  • 威县做网站哪里好wordpress首页文章图片不显示
  • 旅游网网站建设wordpress 主机和域名绑定域名
  • 怎么开网站猎头公司联系方式
  • 住房和城乡建设部网站统计搜搜提交网站
  • 宿州学校网站建设网站安装不了wordpress
  • 我想建立一个网站企业注册查询网
  • 自适应网站什么意思宜昌优化网站建设
  • html5 电商网站模板商业空间设计概念方案
  • 网站开发服务内容邢台市桥西住房建设局网站
  • 怎么申请网站空间域名如何做律师网站
  • 机械设备上哪个网站做外贸推广免费制作永久个人网站
  • 如何做企业网站界面市场营销策划方案案例
  • 高端大气企业网站模板在线申请
  • 平顶山企业网站建设大连网站建设价格
  • 河北做网站网站后台管理无法编辑
  • 普陀网站制作网络营销公司有哪些公司
  • 做网站主流用什么语言域名申请后怎么建网站
  • 上海网站建设过程河南郑州最新消息今天
  • 旅游seo整站优化网站开发怎么进行数据库连接
  • 山东广饶建设银行网站专业做运动服装的网站
  • 网站建设沟通准备wordpress后台配置文件
  • 中山哪里做网站西安哪家公司制作响应式网站建设
  • 网站没有做实名认证软件开发专业属于哪个专业大类
  • 网站头部 标签软件开发工具性能审计不包括
  • 网站开发报价 福州wordpress 顶部美化
  • 网站建设类论文格式树莓派lamp WordPress
  • 淄博网站建设方案优化落实防控措施
  • 网站内容建设与管理wordpress字体调整
  • 网站包括哪些主要内容网络推广平台排行榜
  • 帝国cms添加网站地图网站的维护怎么做