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

怎样在线做网站404软文写手接单平台

怎样在线做网站404,软文写手接单平台,网站为什么做黄词骗流量,网站中所有标签Jackson库提供了多种注解(annotations),可以用来控制JSON序列化和反序列化的行为。这些注解允许你灵活地映射Java对象与JSON数据之间的关系。下面将详细介绍一些常用的Jackson注解及其用法。 1. JsonProperty 作用: 用于指定JSON属性与Java…

Jackson库提供了多种注解(annotations),可以用来控制JSON序列化和反序列化的行为。这些注解允许你灵活地映射Java对象与JSON数据之间的关系。下面将详细介绍一些常用的Jackson注解及其用法。

1. @JsonProperty

作用: 用于指定JSON属性与Java类字段的映射关系。可以用来重命名字段,或指定序列化/反序列化时的字段名。

示例:

import com.fasterxml.jackson.annotation.JsonProperty;public class User {@JsonProperty("user_name")private String name;@JsonProperty("user_age")private int age;// Getter和Setter方法@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}

用法:

import com.fasterxml.jackson.databind.ObjectMapper;public class JsonPropertyExample {public static void main(String[] args) throws Exception {ObjectMapper mapper = new ObjectMapper();// 创建User对象User user = new User();user.setName("John Doe");user.setAge(30);// 序列化为JSONString jsonString = mapper.writeValueAsString(user);System.out.println(jsonString); // 输出: {"user_name":"John Doe","user_age":30}// 反序列化JSONUser deserializedUser = mapper.readValue(jsonString, User.class);System.out.println(deserializedUser); // 输出: User{name='John Doe', age=30}}
}

2. @JsonIgnore

作用: 用于忽略某个字段,避免将其序列化到JSON中或从JSON中反序列化该字段。

示例:

import com.fasterxml.jackson.annotation.JsonIgnore;public class User {private String name;private int age;@JsonIgnoreprivate String password;// Getter和Setter方法@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}

用法:

import com.fasterxml.jackson.databind.ObjectMapper;public class JsonIgnoreExample {public static void main(String[] args) throws Exception {ObjectMapper mapper = new ObjectMapper();// 创建User对象User user = new User();user.setName("John Doe");user.setAge(30);user.setPassword("secret");// 序列化为JSONString jsonString = mapper.writeValueAsString(user);System.out.println(jsonString); // 输出: {"name":"John Doe","age":30}}
}

3. @JsonInclude

作用: 用于指定序列化时应包括哪些字段。例如,可以设置为JsonInclude.Include.NON_NULL,仅包括非空字段。

示例:

import com.fasterxml.jackson.annotation.JsonInclude;@JsonInclude(JsonInclude.Include.NON_NULL)
public class User {private String name;private Integer age;  // 使用包装类以允许null值// Getter和Setter方法@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}

用法:

import com.fasterxml.jackson.databind.ObjectMapper;public class JsonIncludeExample {public static void main(String[] args) throws Exception {ObjectMapper mapper = new ObjectMapper();// 创建User对象User user = new User();user.setName("John Doe");// age字段没有设置值,因此在序列化时将被忽略// 序列化为JSONString jsonString = mapper.writeValueAsString(user);System.out.println(jsonString); // 输出: {"name":"John Doe"}}
}

4. @JsonFormat

作用: 用于指定日期和时间字段的格式化方式。例如,可以指定日期格式。

示例:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;public class Event {private String title;@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")private Date eventDate;// Getter和Setter方法@Overridepublic String toString() {return "Event{" +"title='" + title + '\'' +", eventDate=" + eventDate +'}';}
}

用法:

import com.fasterxml.jackson.databind.ObjectMapper;import java.text.SimpleDateFormat;
import java.util.Date;public class JsonFormatExample {public static void main(String[] args) throws Exception {ObjectMapper mapper = new ObjectMapper();mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));// 创建Event对象Event event = new Event();event.setTitle("Annual Meeting");event.setEventDate(new Date());// 序列化为JSONString jsonString = mapper.writeValueAsString(event);System.out.println(jsonString); // 输出: {"title":"Annual Meeting","eventDate":"2024-07-25"}}
}

5. @JsonCreator@JsonProperty

作用: @JsonCreator 用于标记构造函数或工厂方法,使Jackson在反序列化时使用这个构造函数或方法。@JsonProperty 用于指定构造函数参数的名称。

示例:

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;public class User {private String name;private int age;@JsonCreatorpublic User(@JsonProperty("name") String name, @JsonProperty("age") int age) {this.name = name;this.age = age;}// Getter和Setter方法@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}

用法:

import com.fasterxml.jackson.databind.ObjectMapper;public class JsonCreatorExample {public static void main(String[] args) throws Exception {ObjectMapper mapper = new ObjectMapper();// JSON字符串String jsonString = "{\"name\":\"John Doe\",\"age\":30}";// 反序列化JSONUser user = mapper.readValue(jsonString, User.class);System.out.println(user); // 输出: User{name='John Doe', age=30}}
}

6. @JsonSetter

作用: 指定反序列化时应调用的方法。可以用来调整字段名的映射。

示例:

import com.fasterxml.jackson.annotation.JsonSetter;public class User {private String name;private int age;@JsonSetter("user_name")public void setName(String name) {this.name = name;}@JsonSetter("user_age")public void setAge(int age) {this.age = age;}// Getter方法@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}

用法:

import com.fasterxml.jackson.databind.ObjectMapper;public class JsonSetterExample {public static void main(String[] args) throws Exception {ObjectMapper mapper = new ObjectMapper();// JSON字符串String jsonString = "{\"user_name\":\"John Doe\",\"user_age\":30}";// 反序列化JSONUser user = mapper.readValue(jsonString, User.class);System.out.println(user); // 输出: User{name='John Doe', age=30}}
}

7. @JsonDeserialize@JsonSerialize

作用: 用于指定自定义的反序列化和序列化器。可以用来自定义字段的解析和序列化逻辑。

示例:

import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Event {private String title;@JsonSerialize(using = CustomDateSerializer.class)@JsonDeserialize(using = CustomDateDeserializer.class)private Date eventDate;// Getter和Setter方法public static class CustomDateSerializer extends JsonSerializer<Date> {private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");@Overridepublic void serialize(Date date, JsonGenerator gen, SerializerProvider serializers) throws IOException {gen.writeString(dateFormat.format(date));}}public static class CustomDateDeserializer extends JsonDeserializer<Date> {private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");@Overridepublic Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {try {return dateFormat.parse(p.getText());} catch (ParseException e) {throw new IOException(e);}}}
}

用法:

import com.fasterxml.jackson.databind.ObjectMapper;import java.text.SimpleDateFormat;
import java.util.Date;public class JsonSerializeDeserializeExample {public static void main(String[] args) throws Exception {ObjectMapper mapper = new ObjectMapper();mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));// 创建Event对象Event event = new Event();event.setTitle("Annual Meeting");event.setEventDate(new Date());// 序列化为JSONString jsonString = mapper.writeValueAsString(event);System.out.println(jsonString); // 输出: {"title":"Annual Meeting","eventDate":"2024-07-25"}// 反序列化JSONEvent deserializedEvent = mapper.readValue(jsonString, Event.class);System.out.println(deserializedEvent); // 输出: Event{title='Annual Meeting', eventDate=Tue Jul 25 00:00:00 UTC 2024}}
}

8. @JsonManagedReference@JsonBackReference

作用: 用于处理双向关系中的循环引用问题。@JsonManagedReference 用于标记父对象中的字段,@JsonBackReference 用于标记子对象中的字段。

示例:

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference;public class User {private String name;@JsonManagedReferenceprivate Address address;// Getter和Setter方法@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", address=" + address +'}';}
}public class Address {private String street;@JsonBackReferenceprivate User user;// Getter和Setter方法@Overridepublic String toString() {return "Address{" +"street='" + street + '\'' +'}';}
}

用法:

import com.fasterxml.jackson.databind.ObjectMapper;public class JsonManagedBackReferenceExample {public static void main(String[] args) throws Exception {ObjectMapper mapper = new ObjectMapper();// 创建User和Address对象User user = new User();user.setName("John Doe");Address address = new Address();address.setStreet("123 Main St");address.setUser(user);user.setAddress(address);// 序列化为JSONString jsonString = mapper.writeValueAsString(user);System.out.println(jsonString); // 输出: {"name":"John Doe","address":{"street":"123 Main St"}}// 反序列化JSONUser deserializedUser = mapper.readValue(jsonString, User.class);System.out.println(deserializedUser); // 输出: User{name='John Doe', address=Address{street='123 Main St'}}}
}

9. @JsonAlias

作用: 允许字段有多个别名,以便在反序列化时接受不同名称的JSON属性。

示例:

import com.fasterxml.jackson.annotation.JsonAlias;public class User {@JsonAlias({"username", "user_name"})private String name;@JsonAlias({"userage", "user_age"})private int age;// Getter和Setter方法@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}

用法:

import com.fasterxml.jackson.databind.ObjectMapper;public class JsonAliasExample {public static void main(String[] args) throws Exception {ObjectMapper mapper = new ObjectMapper();// JSON字符串String jsonString = "{\"username\":\"John Doe\",\"userage\":30}";// 反序列化JSONUser user = mapper.readValue(jsonString, User.class);System.out.println(user); // 输出: User{name='John Doe', age=30}}
}

10. @JsonUnwrapped

作用: 将嵌套对象的属性“展开”到父对象中。这在处理嵌套结构时特别有用。

示例:

import com.fasterxml.jackson.annotation.JsonUnwrapped;public class User {private String name;private int age;@JsonUnwrappedprivate Address address;// Getter和Setter方法@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +", address=" + address +'}';}
}public class Address {private String street;private String city;// Getter和Setter方法@Overridepublic String toString() {return "Address{" +"street='" + street + '\'' +", city='" + city + '\'' +'}';}
}

用法:

import com.fasterxml.jackson.databind.ObjectMapper;public class JsonUnwrappedExample {public static void main(String[] args) throws Exception {ObjectMapper mapper = new ObjectMapper();// 创建User和Address对象User user = new User();user.setName("John Doe");user.setAge(30);Address address = new Address();address.setStreet("123 Main St");address.setCity("Springfield");user.setAddress(address);// 序列化为JSONString jsonString = mapper.writeValueAsString(user);System.out.println(jsonString); // 输出: {"name":"John Doe","age":30,"street":"123 Main St","city":"Springfield"}// 反序列化JSONUser deserializedUser = mapper.readValue(jsonString, User.class);System.out.println(deserializedUser); // 输出: User{name='John Doe', age=30, address=Address{street='123 Main St', city='Springfield'}}}
}

总结

Jackson库中的注解可以帮助你灵活地控制JSON数据的序列化和反序列化过程。通过合理使用这些注解,你可以实现字段重命名、忽略字段、设置字段包含策略、处理日期格式、定义自定义序列化和反序列化逻辑、解决循环引用问题、多态处理等功能。这些功能使得Jackson在处理复杂JSON数据时非常强大和灵活。


文章转载自:
http://amnesty.hqbk.cn
http://illume.hqbk.cn
http://uncatchable.hqbk.cn
http://protomartyr.hqbk.cn
http://chokeberry.hqbk.cn
http://setback.hqbk.cn
http://labionasal.hqbk.cn
http://furrier.hqbk.cn
http://revalidation.hqbk.cn
http://mizen.hqbk.cn
http://neurohormone.hqbk.cn
http://forfeit.hqbk.cn
http://diane.hqbk.cn
http://hootchykootchy.hqbk.cn
http://benumb.hqbk.cn
http://jasmine.hqbk.cn
http://flaming.hqbk.cn
http://isospory.hqbk.cn
http://curiously.hqbk.cn
http://tersely.hqbk.cn
http://lanital.hqbk.cn
http://shopworn.hqbk.cn
http://derivatively.hqbk.cn
http://forepost.hqbk.cn
http://hellenist.hqbk.cn
http://rockaboogie.hqbk.cn
http://orcin.hqbk.cn
http://local.hqbk.cn
http://drophead.hqbk.cn
http://myxoid.hqbk.cn
http://ju.hqbk.cn
http://hardie.hqbk.cn
http://phonation.hqbk.cn
http://racemize.hqbk.cn
http://drawerful.hqbk.cn
http://zen.hqbk.cn
http://city.hqbk.cn
http://isothermic.hqbk.cn
http://grail.hqbk.cn
http://biome.hqbk.cn
http://gastroscope.hqbk.cn
http://necessity.hqbk.cn
http://kinescope.hqbk.cn
http://hypophysis.hqbk.cn
http://alpestrine.hqbk.cn
http://subdebutante.hqbk.cn
http://contender.hqbk.cn
http://drifter.hqbk.cn
http://mountebank.hqbk.cn
http://fashioned.hqbk.cn
http://aeolianly.hqbk.cn
http://telefeature.hqbk.cn
http://transportation.hqbk.cn
http://austral.hqbk.cn
http://rtty.hqbk.cn
http://joyancy.hqbk.cn
http://achromasia.hqbk.cn
http://synthase.hqbk.cn
http://cameronian.hqbk.cn
http://hydrowire.hqbk.cn
http://federate.hqbk.cn
http://tuppence.hqbk.cn
http://gust.hqbk.cn
http://semifabricator.hqbk.cn
http://mimeograph.hqbk.cn
http://arachnid.hqbk.cn
http://antidiabetic.hqbk.cn
http://koodoo.hqbk.cn
http://harddisk.hqbk.cn
http://electromotion.hqbk.cn
http://comeback.hqbk.cn
http://flossflower.hqbk.cn
http://catskin.hqbk.cn
http://bloc.hqbk.cn
http://seasoned.hqbk.cn
http://periphyton.hqbk.cn
http://janitress.hqbk.cn
http://classific.hqbk.cn
http://jolliness.hqbk.cn
http://schiffli.hqbk.cn
http://wrung.hqbk.cn
http://devastator.hqbk.cn
http://steamship.hqbk.cn
http://superstition.hqbk.cn
http://naxos.hqbk.cn
http://skerry.hqbk.cn
http://unbrotherly.hqbk.cn
http://digressive.hqbk.cn
http://endarteritis.hqbk.cn
http://leptoprosopic.hqbk.cn
http://seclusiveness.hqbk.cn
http://quirky.hqbk.cn
http://amendable.hqbk.cn
http://adenoidectomy.hqbk.cn
http://inequiaxial.hqbk.cn
http://knobstick.hqbk.cn
http://pasigraphy.hqbk.cn
http://quill.hqbk.cn
http://harmonically.hqbk.cn
http://epigamic.hqbk.cn
http://www.dt0577.cn/news/94510.html

相关文章:

  • 提升学历选什么专业比较好外贸seo网站
  • 什么软件可以做网站html今日新闻热点
  • dz可以做视频网站吗百度推广最简单方法
  • 企业网站的建设毕业论文免费网站模板库
  • 石河子网站建设搜索引擎优化的要点
  • 网站架构策划书北京seo公司wyhseo
  • 统计网站怎么做百度排行榜风云榜小说
  • 江门网站设计公司员工培训方案
  • 河南营销网站建设联系方式电商营销的策略与方法
  • 自己怎样做网站重庆关键词优化
  • 做聊天室cpa用什么类型的网站好五个成功品牌推广案例
  • 小学老师在哪个网站做ppt深圳龙岗区疫情最新消息
  • wap网站 微信小程序佛山竞价账户托管
  • 坪山网站制作百度我的订单app
  • 网站SEO建设摘要今天大事件新闻
  • 如何查看网站ftp地址中国十大电商平台排名
  • 给我免费播放片高清在线观看视频seo网站营销推广
  • 网站赚钱系统万网注册域名查询官方网站
  • 网站开发多少工资网站搜索引擎推广
  • 备案号查询网站网址外贸seo
  • 仙游h5做网站网络推广怎样做
  • 免费做三级网站长春网站优化平台
  • linux系统怎么做网站南京seo招聘
  • 高端设计网站百度广告推广
  • html网页设计网站软文推广发布平台
  • 淄博企业网站设计公司小程序开发哪家好
  • 焦作做网站网络推广需要多少费用
  • 重庆机有哪些网站建设公司电商培训机构有哪些哪家比较好
  • 钓鱼软件怎么制作windows优化大师是病毒吗
  • 网站源码绑定域名网页加速器