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

怎样做理财投资网站做网站用花生壳哪个版本

怎样做理财投资网站,做网站用花生壳哪个版本,服装外贸平台有哪些,营销型背景 web工程中#xff0c;数据交互是不可避免的#xff0c;相比xml#xff0c;json是现在流行的数据交互。 在调试接口中#xff0c;发现返回字段的大小写不是我所期望的#xff0c;原本应该返回的nNum字段变成了nnum#xff0c;这样就导致和前端约定的有出入了。 ja…背景 web工程中数据交互是不可避免的相比xmljson是现在流行的数据交互。 在调试接口中发现返回字段的大小写不是我所期望的原本应该返回的nNum字段变成了nnum这样就导致和前端约定的有出入了。 jackson web工程中比较流行的框架是springMVCspringmybatis。数据交互由springMVC完成但是springMVC也不是自己序列化json的它将这个工作交给了jackson。 jackson对object进行序列化的过程中确实存在key大写变小写的问题。看我娓娓道来。 序列化原理 这里只对jackson的序列化原理做阐述其他的序列化工具不一定是相同的原理不可套用。 众所周知json的数据格式是key:value的形式现在的问题就出现在key的大小写这边。 下面我们对其进行一定的测试 object中的field都有其对应的get,set方法一般都会选择是IDE自动生成。如下图所示 其运行的结果当然没有问题 jackson在序列化的时候如何定义key呢 jackson会获取field对应的get方法方法名比如getXxx然后进行将get进行截断变成Xxx最后将其小写变成xxx。 如果我们将xxx改成xXx但是没有更改其get方法key仍然是xxx并不是我们期望的xXx 网上的很多博客基本都只提及大写转小写其实不然jackson只会将连续的大写转换成小写如果中间断了之后的大写字符也不会处理了并且jackson是从开头检测的如果开头就是小写那么之后的大写字符也不会处理了。测试如下 如何避免 正如网上的博客所说你需要在field和其对应的get方法上加上对应的标签然后jackson在序列化的时候就会以你的field名称为key 总结spring的序列化工作是由jackson完成(你也可以配置其他的序列化工具) jackson序列化的key定义与field名称无关反而和其get方法名称有关 jackson的大写转小写从开头检测并且一定是连续的 jackson的这种序列化机制是可以避免的这样可以以field名称作为key jackson序列化和反序列化Json jackson包提供了java对象与json相互转换的API。 jackson转换机制 Jackson要求java对象是一个POJO对象即它是一个普通JavaBean对象。此外如果字段是用private修饰的则必须有getXXX()方法否则字段用public修饰。 json常见格式如下 {key1 : value,key2 : [...],key3 : {...} }jackson把JavaBean对象的每个字段映射为json的键json键值由JavaBean的getXXX()方法确定。 json键值从形式上看可以分为基本类型字符串、数值、数组、字典。当JavaBean的字段声明为基本类型时对应json的基本类型当JavaBean声明为数组或链表时对应json的数组类型当JavaBean声明为字典或对象时对应json的字典类型。 序列化 定义一个符合JavaBean规则的类 package com.weixia.Json;import java.util.ArrayList; import java.util.HashMap; import java.util.Map;public class Bean {private String name;private int[] stature;private Friend friend;private ArrayListString song;private MapString,Integer score new HashMapString,Integer();public Bean(String name) {this.name name;}public String getName() {return this.name;}public void setStature(int[] stature) {this.stature stature;}public int[] getStature() {return this.stature;}public void setSong(ArrayListString song) {this.song song;}public ArrayListString getSong() {return this.song;}public void setFriend(Friend friend) {this.friend friend;}public Friend getFriend() {return this.friend;}public void addScore(String subject,Integer score) {this.score.put(subject, score);}public Map getScore() {return this.score;} }class Friend {public String name;public int age; }将Bean对象序列化为json如下 package com.weixia.Json;import java.util.ArrayList;import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.annotation.JsonInclude.Include;public class App {public static void main( String[] args ) throws Exception{Bean bean new Bean(Album);ObjectMapper mapper new ObjectMapper();bean.setStature(new int[] {88,60,89});ArrayListString song new ArrayListString();song.add(奇异恩典);song.add(东京的都);bean.setSong(song);Friend friend new Friend();friend.name 小明;friend.age 24;bean.setFriend(friend);bean.addScore(Math, 100);bean.addScore(PE, 88);mapper.configure(SerializationFeature.INDENT_OUTPUT, true); //格式化输出mapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true); //键按自然顺序输出mapper.setSerializationInclusion(Include.NON_EMPTY); //忽略POJO中属性为空的字段mapper.writeValue(System.out, bean);} }反序列化 json文件如下 {name: weixia,age: 24,stature:[89,66,89],friend:{name:zhiye,age:24},test: }定义一个符合JaveBean规则的类 package com.weixia.Json;public class People {private String name;private int age;private Friend friend;private int[] stature;public String getName() {return this.name;}public int getAge() {return this.age;}public Friend getFriend() {return this.friend;}public int[] getStature() {return this.stature;} }class Friend {public String name;public int age; }将json反序列化为java对象 package com.weixia.Json;import java.io.File;import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper;public class Json2Bean {public static void main(String[] args) throws Exception {ObjectMapper mapper new ObjectMapper();mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); //忽略未知的属性People people mapper.readValue(new File(F:\\test.json), People.class);System.out.println(people.getName());System.out.println(people.getAge());System.out.println(people.getFriend());int[] stature people.getStature();for (int num : stature) {System.out.println(num);}}}
http://www.huolong8.cn/news/430525/

相关文章:

  • 小说网站编辑怎么做做机械设备网站
  • 广州网站建设开发线上注册公司流程和费用
  • 低价网站建设顺德大型门户网站开发费用
  • 如何评价一个网站做的是否好建立网站就是制作网页吗
  • 做传销网站的广州有哪些科技公司
  • 做雕塑网站找哪家好域名备案和网站备案的区别
  • 如何建设移动网站常用的软件开发工具有哪些
  • 教育培训机构招生网站建设链接网
  • 做网站彩票代理多少钱啊筑龙建筑资料网
  • 甘肃制作网站营销型网站建设教程视频教程
  • 四川省城市建设培训中心 网站哈尔滨快速建站专业定制
  • 淮滨网站建设公司宁德小程序开发
  • 网站建设公司模版wordpress商城主题模板下载
  • 免费企业网站建设免费房地产销售政策
  • wordpress 登入seo职业发展
  • 上海网站平台建设网新中英企业网站管理系统
  • 建公司网站的详细步骤前端和后端哪个难
  • 网站建设czzmcnwordpress后台编辑主题时提示:抱歉_该文件无法被编辑
  • 农业企业网站建设流程网页托管平台排名
  • 网站建设项目策划书wordpress计数插件
  • 杭州网站设计建立企业网站域名备案需要有网站吗
  • 网站域名好了下一步怎样创建个人网页
  • 网站虚拟旅游怎么做的响应式的网站做优化好吗
  • 西安网站维保公司网络防御中心是什么
  • 南京seo网站管理网站备案成功后怎么
  • 网站开发电脑配置手机网站建设公司电话咨询
  • 网站源码下载500套wordpress模板下载
  • 上海网站推广优化简单的h5免费模板
  • 济南网站建设平台官网网站建设 印花税
  • 标准型网站---北京网站建设网站改版设计注意事项