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

开发网站手机版设计师配色网站

开发网站手机版,设计师配色网站,大连企业做网站公司排名,广州建站公司有哪些1. 主流 JSON 库的选择 在 Java 中,常用以下库进行 JSON 和对象之间的转换: Jackson:Spring 默认集成,性能优异,支持流式解析。FastJSON:阿里开发,速度快,但需注意版本安全性。Gso…
1. 主流 JSON 库的选择

在 Java 中,常用以下库进行 JSON 和对象之间的转换:

  • Jackson:Spring 默认集成,性能优异,支持流式解析。
  • FastJSON:阿里开发,速度快,但需注意版本安全性。
  • Gson:Google 维护,简单易用,语法简洁。
  • JSON-B:Java 标准 API(需依赖库如 Eclipse Yasson)。

2. 基本步骤

无论是哪种库,通用的转化步骤如下:

  1. 引入依赖
    在 Maven/Gradle 中添加对应 JSON 库的依赖。

  2. 定义目标类
    创建 Java 类,属性与 JSON 字段对应(支持嵌套对象或数组)。

  3. 调用 API 转化
    使用库的 API 将 JSON 字符串转为对象。


示例 1:使用 FastJSON

依赖引入(Maven)

<XML>

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.23</version>
</dependency>
代码实现

<JAVA>

public class User {private String name;private int age;// 字段名与 JSON 中的 key 一致(或使用 @JSONField 注解)// 需要 getter/setter
}// 示例 JSON 字符串
String jsonStr = "{\"name\": \"John\", \"age\": 30}";// 转换
User user = JSON.parseObject(jsonStr, User.class);
关键注解
  • @JSONField(name = "json_key"):映射 JSON 字段名。

<JAVA>

public class WechatUser {@JSONField(name = "openid")private String openId;
}

示例 2:使用 Jackson

依赖引入(Spring Boot 默认包含)

<XML>

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.13.3</version>
</dependency>
代码实现

<JAVA>

ObjectMapper mapper = new ObjectMapper();// 将 JSON 转为对象
User user = mapper.readValue(jsonStr, User.class);// 处理复杂 JSON(如嵌套对象或数组)
String nestedJson = "{\"name\": \"John\", \"address\": {\"city\": \"Paris\"}}";
User user = mapper.readValue(nestedJson, User.class);
关键注解
  • @JsonProperty("json_key"):映射 JSON 字段名。
  • @JsonIgnore:忽略字段。

示例 3:使用 Gson

依赖引入

<XML>

<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.9</version>
</dependency>
代码实现

<JAVA>

Gson gson = new Gson();// JSON 转为对象
User user = gson.fromJson(jsonStr, User.class);// 处理复杂结构
List<User> users = gson.fromJson("[{\"name\": \"John\"}]", new TypeToken<List<User>>(){}.getType());
关键配置
  • @SerializedName("json_key"):字段映射注解。

<JAVA>

public class WechatUser {@SerializedName("openid")private String openId;
}

3. 常见问题及解决

问题 1:字段名不匹配
  • 场景:JSON 中的 openid vs Java 类的 openId
  • 解决
    使用库的注解(如 @JsonProperty@JSONField@SerializedName)。
问题 2:缺少默认构造函数
  • 报错No default constructor for XXX.
  • 解决:确保类有一个无参构造器。
问题 3:处理日期格式
  • 场景:JSON 中的日期字符串转为 LocalDateTime
  • 解决
    自定义序列化/反序列化规则(如 @JsonFormat 注解)。

<JAVA>

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
问题 4:嵌套对象或集合
  • 示例 JSON

    <JSON>

    {"name": "John","orders": [{"id": 1}, {"id": 2}]
    }
  • 对象定义

    <JAVA>

    public class User {private String name;private List<Order> orders;
    }public class Order {private int id;
    }

4. 安全性注意事项

  • 避免反序列化漏洞:禁用 AutoType 特性(FastJSON 需设置 ParserConfig.getGlobalInstance().setSafeMode(true);)。
  • 校验 JSON 来源:确保字符串来自可信接口,避免注入攻击。

5. 性能优化

  • 缓存 ObjectMapper 或 Gson 实例:避免重复创建。
  • 使用流式 API:处理大 JSON 文件时,用 JsonParser 逐步解析(如 Jackson 的 JsonFactory)。

代码模板(通用)

<JAVA>

try {// 使用 JacksonObjectMapper mapper = new ObjectMapper();MyObject obj = mapper.readValue(jsonStr, MyObject.class);// 使用 GsonGson gson = new Gson();MyObject obj = gson.fromJson(jsonStr, MyObject.class);// 使用 FastJSONMyObject obj = JSON.parseObject(jsonStr, MyObject.class);
} catch (JsonProcessingException e) {// 处理格式错误
} catch (Exception e) {// 其他异常(如字段缺失)
}

通过掌握不同库的特性及常见问题处理,可高效完成 JSON 字符串到对象的转化,适用于 API 响应解析、配置文件读取等场景。

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

相关文章:

  • 柯林自助建站网易博客搬家wordpress
  • seo网站架构学勇建站
  • 哪里可以接网站开发项目做长春网站建设哪个公司好
  • 关于网站建设领导分工正邦做网站吗
  • 江门seo网站排名合肥企业网站模板建站
  • 上海专业做网站公司单位做网站的目的
  • 网站代码需要注意什么问题app下载页面html模板
  • jsp网站开发实例实验报告免费有效的推广网站
  • 长春做网站 信赖吉网传媒深圳注册公司代理
  • 某网站优化方案widgetkit wordpress
  • 如何获取网站备案号企业展厅效果图大全
  • asp加dw做网站免费cmsasp
  • 建设门户网站所需室内设计师招聘简章
  • 网站域名怎么免费获取小程序开发制作官网
  • 怎么弄网站wordpress 图片变形
  • 福州服务类网站建设怎么查看网站谁做的
  • 网站后台数据处理编辑主要是做什么的啊wordpress做成淘宝客
  • 住房和城乡建设部网站共有产权建设网站公司兴田德润官方地址
  • 做一个网站要多长时间长沙网站建设优化
  • 广安哪里有做网站的公司网站主要盈利模式
  • 建设企业网站管理系统目的黑龙江省住房和城乡建设厅官网
  • 泡沫制品技术支持东莞网站建设网站seo搜索引擎优化案例
  • 网站建设需要这些工具和软件公司网站怎么做才能吸引人
  • 网站建设服务费是否无形资产河池网站制作
  • 金昌市建设局网站自己做的网站添加交费功能
  • 263网站建设怎么样线上广告
  • 网站购买云空间网站cms系统哪个好用吗
  • 加强企业网站建设的通知新闻摘抄大全
  • 优质网站建设公司哪家好有一个做场景动画的网站
  • 重庆网站推广运营建一个app平台的费用多少