刚看到有网友发问:“一个人写代码也用 Git 吗?”作为程序员,我只能说,用Git就像吃饭要用筷子,哪怕只吃一口也是必须的。
这事本质上是对“版本管理”的理解还停留在团队协作的层面。但其实就算你是独狼开发者,也免不了改来改去、试错回滚。没有Git,代码一出事就只能靠“最终版_v2_final_final2”那种土办法,真出事了你连哭的地方都找不到。
网友们的回复我看了看,有的说“用Git是给未来的自己留条活路”,我非常认
用Git不分几人开发,而是有没有责任心和职业素养的体现。写代码的都懂:不是你不需要Git,而是你还没踩过大坑。早点养成习惯,绝对是自救。【备注:文末可领最新资料】
面试题:将 JSON 字符串转换为对象
今天咱们聊点轻松又实用的:怎么把一个 JSON 字符串,优雅地转成 Java 对象。
这个问题看起来很简单是不是?但是我跟你讲,我面试的时候真被这个坑过一次!面试官非要让我用原生方式搞,我一开始写了一堆 substring
、split
,结果调试了半小时还出 Bug,真的想原地退役。后来我才明白——这玩意本质上靠的是 库的力量,不是你用脑子怼出来的😤
那我们来试试用最主流、最稳的方式来搞:
Java 里解析 JSON 最常见的方式有两种:
1)用 Jackson 2)用 Gson
我先说结论:Jackson 封神,性能高、社区大、兼容性强,连 Spring Boot 内置都是它,咱还犹豫啥?
下面我直接撸个例子给你看:
import com.fasterxml.jackson.databind.ObjectMapper;
publicclass JsonToObjectDemo {
public static void main(String[] args) {
String json = "{\"name\":\"老鬼\",\"age\":35,\"language\":\"Java\"}";
try {
ObjectMapper mapper = new ObjectMapper();
Developer dev = mapper.readValue(json, Developer.class);
System.out.println("姓名:" + dev.getName());
System.out.println("年龄:" + dev.getAge());
System.out.println("语言:" + dev.getLanguage());
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Developer {
private String name;
privateint age;
private String language;
// Getters and Setters 必须有,不然 Jackson 不认你
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 getLanguage() { return language; }
public void setLanguage(String language) { this.language = language; }
}
👆这个代码我亲测没毛病,在我本地 IntelliJ 上跑得飞快,输出如下:
姓名:老鬼
年龄:35
语言:Java
是不是很香?是不是比你一个个手动解析字段强太多?!
等等,有个坑得提前说:如果你 JSON 字段和 Java 字段名不一致,怎么办?
比如:
{"user_name":"laogui"}
而你 Java 写的是:
private String userName;
这时候 Jackson 默认不认得,输出会是 null。你得加个注解👇:
@JsonProperty("user_name")
private String userName;
是不是瞬间就通了?Jackson 真的是强,配合注解能打遍各种奇葩格式的 JSON。
不过我得说句实话,如果你只是简单解析几条 JSON,Gson 也够用了。像这样:
import com.google.gson.Gson;
public class GsonDemo {
public static void main(String[] args) {
String json = "{\"name\":\"老鬼\",\"age\":35,\"language\":\"Java\"}";
Gson gson = new Gson();
Developer dev = gson.fromJson(json, Developer.class);
System.out.println(dev.getName());
}
}
但要注意:Gson 对时间格式、泛型集合支持不如 Jackson 健壮,我之前用 Gson 遇到过 LocalDateTime
直接炸掉,要自己写 TypeAdapter,麻烦死了。
总结一下:
✅ JSON 字符串转对象,别手撸,别手撸,别手撸!(重要的事说三遍) ✅ 首选 Jackson,用起来最稳,和 Spring Boot 原生兼容 ✅ 字段不一致就用 @JsonProperty
搞定 ✅ 嵌套复杂结构就用自动生成工具,别折磨自己 ✅ Gson也能用,但不推荐做复杂业务
以上就是今天这期干货,感兴趣的朋友可以试试,也欢迎把你遇到过的 JSON 坑发出来一起聊聊,我们下篇见。