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

网站内部链接优化方法北京电商网站开发

网站内部链接优化方法,北京电商网站开发,企点官网网址,wordpress首页不加载图片一、思考 假设给一个java bean,让你按照 json 的格式打印出来,你会怎么做? 比如这个java bean 长这样,并且创建了一个叫宝儿姐的朋友 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 List<User> 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 List<User> getChilds() {return childs;}public void setChilds(List<User> 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"));List<User> 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"));List<User> 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.15wanjia.com/news/159193.html

相关文章:

  • 网站建设教程出售用苏州久远网络舟山做网站公司
  • 合肥网站代运营公司有哪些网站建设方面的课程
  • 免费建站小程序南宁seo企业优化
  • 网站建设的报价单个人网站备案地址选择
  • 怎么修改网站后台路径怎样建设网站?(怎样注册域名?如何选择主机?网站应有哪些功能模块
  • 在线做网站怎么做计算机软件开发难学吗
  • 免费微网站_自助建站厦门黄页电话号码查询
  • 做货代的有哪些网站wordpress吾爱
  • 怎样说服客户做网站做网站要在工商备案吗
  • 做视频小网站犯法吗辽宁工程招投标信息网
  • 网站怎么制作做肇庆网站建设方案优化
  • 公司网站赏析国外创意网站设计
  • 谁需要做网站的嘉兴wordpress 页面显示最新文章
  • 邯郸建设网站制作服务器地址怎么查询
  • 英铭广州网站建设免费的行情软件网站下载免费
  • 在线生成网站地图黄岩网站建设
  • 电商网站建设的关键长沙本地推广平台
  • 国内建筑网站微信小程序怎么推广
  • wordpress企业微信常州自助建站seo
  • 制作一个公司网站的流程广州市城市建设网站
  • 天律网站建设销售型网站有哪些
  • mui做wap网站年轻人免费在线看视频
  • 国外 外贸 网站 源码台州优秀关键词优化
  • 旅游网站规划方案域名收录提交
  • easyui 网站开发实现定制软件开发报价
  • 想访问国外网站 dns北京欢迎您
  • 网络营销导向型企业网站建设的原则百度开户做网站2400
  • 企业网站设计软件泰顺做网站
  • 做证明图片的网站中国字体设计网官网
  • 制作一个网站都需要学什么湖州企业网站建设