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

开发软件下载网站微信上如何投放广告

开发软件下载网站,微信上如何投放广告,saas建站平台源码,中国第一个做电商网站在实际开发中,我们经常需要处理复杂的对象,这些对象可能包含基本字段、嵌套对象、List、Map 等数据结构。以下是一个完整的工具类封装,支持复杂对象的序列化(对象转JSON)和反序列化(JSON转对象)…

在实际开发中,我们经常需要处理复杂的对象,这些对象可能包含基本字段、嵌套对象、List、Map 等数据结构。以下是一个完整的工具类封装,支持复杂对象的序列化(对象转JSON)和反序列化(JSON转对象),并处理常见的数据类型。

复杂对象与JSON转换工具类(基于Gson)

  1. 添加Gson依赖
    在 build.gradle 中添加Gson依赖:
复杂对象与JSON转换工具类(基于Gson)
2. 添加Gson依赖
在 build.gradle 中添加Gson依赖:
  1. 工具类实现
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;public class JsonUtil {private static final Gson gson = new GsonBuilder().setPrettyPrinting() // 格式化输出.serializeNulls()    // 序列化空值.create();/*** 将对象转换为JSON字符串** @param object 需要转换的对象* @return JSON字符串*/public static String toJson(Object object) {return gson.toJson(object);}/*** 将JSON字符串转换为对象** @param json  JSON字符串* @param clazz 目标对象的Class类型* @param <T>   目标对象的类型* @return 转换后的对象*/public static <T> T fromJson(String json, Class<T> clazz) {return gson.fromJson(json, clazz);}/*** 将JSON字符串转换为List对象** @param json  JSON字符串* @param clazz List中元素的Class类型* @param <T>   List中元素的类型* @return 转换后的List对象*/public static <T> List<T> fromJsonToList(String json, Class<T> clazz) {Type type = TypeToken.getParameterized(List.class, clazz).getType();return gson.fromJson(json, type);}/*** 将JSON字符串转换为Map对象** @param json JSON字符串* @return 转换后的Map对象*/public static <K, V> Map<K, V> fromJsonToMap(String json) {Type type = new TypeToken<Map<K, V>>() {}.getType();return gson.fromJson(json, type);}/*** 将对象转换为格式化的JSON字符串(便于阅读)** @param object 需要转换的对象* @return 格式化后的JSON字符串*/public static String toPrettyJson(Object object) {return gson.toJson(object);}
}
  1. 复杂对象示例
    3.1 定义数据模型
import java.util.List;
import java.util.Map;public class User {private String name;private int age;private String email;private Address address;          // 嵌套对象private List<String> hobbies;    // List字段private Map<String, String> metadata; // Map字段// 必须有无参构造函数public User() {}public User(String name, int age, String email, Address address, List<String> hobbies, Map<String, String> metadata) {this.name = name;this.age = age;this.email = email;this.address = address;this.hobbies = hobbies;this.metadata = metadata;}// Getter和Setter方法public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Address getAddress() {return address;}public void setAddress(Address address) {this.address = address;}public List<String> getHobbies() {return hobbies;}public void setHobbies(List<String> hobbies) {this.hobbies = hobbies;}public Map<String, String> getMetadata() {return metadata;}public void setMetadata(Map<String, String> metadata) {this.metadata = metadata;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +", email='" + email + '\'' +", address=" + address +", hobbies=" + hobbies +", metadata=" + metadata +'}';}
}class Address {private String city;private String zipCode;// 必须有无参构造函数public Address() {}public Address(String city, String zipCode) {this.city = city;this.zipCode = zipCode;}// Getter和Setter方法public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getZipCode() {return zipCode;}public void setZipCode(String zipCode) {this.zipCode = zipCode;}@Overridepublic String toString() {return "Address{" +"city='" + city + '\'' +", zipCode='" + zipCode + '\'' +'}';}
}

3.2 对象转JSON

Address address = new Address("New York", "10001");
List<String> hobbies = Arrays.asList("Reading", "Traveling");
Map<String, String> metadata = new HashMap<>();
metadata.put("role", "admin");
metadata.put("department", "IT");User user = new User("John", 25, "john@example.com", address, hobbies, metadata);
String json = JsonUtil.toJson(user);
System.out.println(json);// 输出:
// {
//   "name": "John",
//   "age": 25,
//   "email": "john@example.com",
//   "address": {
//     "city": "New York",
//     "zipCode": "10001"
//   },
//   "hobbies": ["Reading", "Traveling"],
//   "metadata": {
//     "role": "admin",
//     "department": "IT"
//   }
// }

3.3 JSON转对象

String json = "{\"name\":\"John\",\"age\":25,\"email\":\"john@example.com\"," +"\"address\":{\"city\":\"New York\",\"zipCode\":\"10001\"}," +"\"hobbies\":[\"Reading\",\"Traveling\"]," +"\"metadata\":{\"role\":\"admin\",\"department\":\"IT\"}}";
User user = JsonUtil.fromJson(json, User.class);
System.out.println(user);// 输出:
// User{name='John', age=25, email='john@example.com', address=Address{city='New York', zipCode='10001'}, hobbies=[Reading, Traveling], metadata={role=admin, department=IT}}

3.4 JSON转List

String json = "[{\"name\":\"John\",\"age\":25,\"email\":\"john@example.com\"}," +"{\"name\":\"Alice\",\"age\":30,\"email\":\"alice@example.com\"}]";
List<User> userList = JsonUtil.fromJsonToList(json, User.class);
System.out.println(userList);// 输出:
// [User{name='John', age=25, email='john@example.com'}, User{name='Alice', age=30, email='alice@example.com'}]

3.5 JSON转Map

String json = "{\"role\":\"admin\",\"department\":\"IT\"}";
Map<String, String> metadata = JsonUtil.fromJsonToMap(json);
System.out.println(metadata);// 输出:
// {role=admin, department=IT}
  1. 扩展功能
    4.1 自定义序列化与反序列化
    如果需要处理复杂的数据类型(如日期、枚举等),可以通过 GsonBuilder 注册自定义的序列化器和反序列化器。
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new DateSerializer()) // 自定义日期序列化.registerTypeAdapter(Date.class, new DateDeserializer()) // 自定义日期反序列化.create();

4.2 排除字段
使用 @Expose 注解控制字段的序列化和反序列化。

public class User {@Exposeprivate String name;@Expose(serialize = false) // 仅反序列化,不序列化private int age;private String email; // 不参与序列化和反序列化
}

4.3 处理空值
通过 GsonBuilder 配置是否序列化空值。

Gson gson = new GsonBuilder().serializeNulls() // 序列化空值.create();
  1. 总结
    通过封装基于Gson的工具类,可以轻松处理复杂对象的序列化和反序列化,包括:

基本字段。

嵌套对象。

List 和 Map 等集合类型。

该工具类适用于大多数Android开发场景,特别是与后端API交互时的数据解析和封装。如果需要更复杂的功能(如自定义序列化、排除字段等),可以通过 GsonBuilder 进一步扩展。

http://www.dtcms.com/wzjs/166200.html

相关文章:

  • 合肥网站商城开发百度官网网址
  • 深圳个性化网站建设公司网络营销服务公司有哪些
  • 做网站是用什么语言的win10最强性能优化设置
  • 网站能自己做吗南宁百度网站推广
  • 江苏亿之盛建设有限公司网站whois查询 站长工具
  • 网站开发和优化关系广州网站开发多少钱
  • 重庆做网站建设公司seo工资待遇怎么样
  • 做T恤卖网站国外网站开发
  • 网站建设公司的市场开发方案网站前期推广
  • 新乡营销网站建设公司最近新闻热点大事件
  • 深圳福永网站建设公司seo短视频加密路线
  • 菏泽网站开发公司江北关键词优化排名seo
  • 网站开发计划书模板免费测试seo
  • 如何自己开一个网站黄冈网站推广软件费用是多少
  • 平面设计学院百度seo排名优化公司哪家好
  • 湖南长沙旅游攻略自助游北京seo优化排名推广
  • 美国服务器网站推荐襄阳seo优化排名
  • 衡水电子网站建设做网站建设公司
  • 模板建站能建个门户网站吗网站制作代码
  • 怎么做网站底部备案号seo免费自学的网站
  • 网站创建域名怎么做自己的网站
  • 绵阳力嘉信息网站建设公司深圳网络推广seo软件
  • mvc4做网站五网站推广的软件
  • ui设计培训机构好惠州百度推广优化排名
  • 高端网站模板中国培训网
  • 飞扬动力网站建设关键词全网搜索工具
  • 做视频网站被判刑做直销去哪里找客户
  • 二维码小程序制作上海网站seoseodian
  • 北京性价比网站建设网站优化一年多少钱
  • 网站项目团队介绍怎么写域名查询工具