Dieser Artikel nimmt am "Golden Stone Project" teil
Vorwort
In der heutigen täglichen Entwicklung, egal ob Frontend oder Backend, werden Daten im JSON-Format immer häufiger verwendet, man kann sogar sagen, dass sie allgegenwärtig sind.
Am meisten kontaktiert wird, dass die in der POST-Anfrage übergebenen Daten im Allgemeinen im Anfragetext im JSON-Format platziert werden und die von verschiedenen APIs auf der Serverseite zurückgegebenen Daten grundsätzlich im JSON-Format im Antworttext zurückgegeben werden RESTful-Stil.
Natürlich wird JSON nicht nur im Anfrage- und Antwortprozess verwendet, sondern muss auch in einigen Geschäftsszenarien verwendet werden, insbesondere bei der Konvertierung zwischen JSON- und Java-Objekten .
Daher ist für uns in der Java-Entwicklung die Konvertierung zwischen Daten im JSON-Format und Java-Objekten unumgänglich.
Konvertierungstool
Es gibt mehrere Mainstream-Konvertierungstools wie folgt. Es wird empfohlen, nur eines davon für allgemeine Projekte zu wählen. Derzeit ist Jackson dasjenige mit den positivsten Kommentaren.
-
Jackson
-
FastJson
-
Gson
-
Hutool
Vorbereitete JSON-Zeichenfolge und -Liste
Zu Demonstrationszwecken ist hier ein JSON-String:
String jsonStr = "{\"name\" : \"GTA5\", \"price\" : 54.5}";
复制代码
Hier ist eine gegeben List<Game>
:
Game game1 = Game.builder().name("NBA2K23").price(new BigDecimal("198.0")).build();
Game game2 = Game.builder().name("Sim City4").price(new BigDecimal("22.5")).build();
List<Game> gameList = new ArrayList<>();
gameList.add(game1);
gameList.add(game2);
复制代码
Jackson
Wir müssen ObjectMapper
das von Jackson bereitgestellte Objekt um die Konvertierung abzuschließen:
ObjectMapper objectMapper = new ObjectMapper();
复制代码
JSON-String in Java-Objekt umwandeln: readValue
Bei readValue
der Methode ist der erste Parameter ein JSON-String und der zweite Parameter der Typ der konvertierten Zielklasse.
// 将 JSON 字符串 转成 Java 对象
Game game = objectMapper.readValue(jsonStr, Game.class);
复制代码
Konvertieren Sie Java-Objekte in JSON-Strings: writeValueAsString
Verwenden Sie writeValueAsString
die Methode , die ein Java-Objekt akzeptiert und eine JSON-Zeichenfolge zurückgibt.
// 将 Java 对象转成 JSON 字符串
String gameJson = objectMapper.writeValueAsString(game);
复制代码
Liste in JSON-String umwandeln: writeValueAsString
Verwenden Sie auch writeValueAsString
die Methode .
// 将 List<Game> 转成 JSON 字符串
String gameListJson = objectMapper.writeValueAsString(gameList);
复制代码
JSON-String in Liste umwandeln: readValue
使用 readValue
方法,第一个参数是 JSON 字符串,第二个参数是转化的目标 TypeReference(类型参照)对象,这里指定其泛型为 List<Game>
。
// 将 JSON 字符串 转成 List<Game>
List<Game> gameListFromJson = objectMapper.readValue(gameListJson, new TypeReference<List<Game>>() {});
复制代码
总结
从 JSON 到 Java 对象,使用 readValue
方法。
从 Java 对象到 JSON,使用 writeValueAsString
方法。
FastJson
我们需要借助 FastJson 提供的 JSONObject
对象来完成转化。
将 JSON 字符串 转成 Java 对象:parseObject
使用 parseObject
方法,将 JSON 字符串解析(转化)成 Java 对象,第一个参数是 JSON 字符串,第二个参数是目标类的类型。
// 将 JSON 字符串 转成 Java 对象
Game game = JSONObject.parseObject(jsonStr, Game.class);
复制代码
将 Java 对象转成 JSON 字符串:toJSONString
使用 toJSONString
方法,将 Java 对象直接转成 JSON 字符串,接受一个 Java 对象,返回对应的 JSON 字符串。
// 将 Java 对象转成 JSON 字符串
String gameJson = JSONObject.toJSONString(game);
复制代码
将 List 转成 JSON 字符串:toJSONString
同理,可以直接丢一个 List 对象给 toJSONString
方法,把 List 转成 JSON 字符串。
// 将 List<Game> 转成 JSON 字符串
String gameListJson = JSONObject.toJSONString(gameList);
复制代码
将 JSON 字符串 转成 List:parseArray
使用 parseArray
方法,将 JSON 字符串解析成 List。2.0 版本需要调用 toJavaList
方法,得到最后的 List
// 将 JSON 字符串 转成 List<Game>
// fastjson 1.2.x 版本:List<Game> gameListFromJson = JSONObject.parseArray(gameListJson, Game.class);
List<Game> gameListFromJson = JSONArray.parseArray(gameListJson).toJavaList(Game.class);
复制代码
总结
JSON 转成 Java Bean 使用 parseObject
方法,转成 List 使用 parseArray
方法。
任意对象转成 JSON,则使用 toJSONString
方法。
Gson
我们需要借助 Gson
对象来完成转化:
Gson gson = new Gson();
复制代码
将 JSON 字符串 转成 Java 对象:fromJson
使用 fromJson
方法,两个参数的定义也是和上面两个一样的。
// 将 JSON 字符串 转成 Java 对象
Game game = gson.fromJson(jsonStr, Game.class);
复制代码
将 Java 对象转成 JSON 字符串:toJson
使用 toJson
方法,接受一个 Java 对象,然后返回对应的 JSON 字符串。
// 将 Java 对象转成 JSON 字符串
String gameJson = gson.toJson(game);
复制代码
将 List 转成 JSON 字符串:toJson
List 也是同理,使用 toJson
方法。
// 将 List<Game> 转成 JSON 字符串
String gameListJson = gson.toJson(gameList);
复制代码
将 JSON 字符串 转成 List:fromJson
这里和 Jackson 的也是类似,第二个参数使用 TypeToken
对象指定转化的目标类型为 List<Game>
。
// 将 JSON 字符串 转成 List<Game>
List<Game> gameListFromJson = gson.fromJson(gameListJson, new TypeToken<List<Game>>() {}.getType());
复制代码
总结
从 JSON 到 Java 对象,使用 fromJson
方法。
从 Java 对象到 JSON,使用 toJson
方法。
Hutool
我们需要借助 Hutool 提供的 JSONUtil
对象来完成转化。
将 JSON 字符串 转成 Java 对象:toBean
使用 toBean
方法,还是同样的,接受的两个参数,一个字符串,一个目标类的类型。
// 将 JSON 字符串 转成 Java 对象
Game game = JSONUtil.toBean(jsonStr, Game.class);
复制代码
将 Java 对象转成 JSON 字符串:toJsonStr
使用 toJsonStr
方法,接受一个 Java 对象,返回一个 JSON 字符串。
// 将 Java 对象转成 JSON 字符串
String gameJson = JSONUtil.toJsonStr(game);
复制代码
将 List 转成 JSON 字符串:toJsonStr
同理,也是 toJsonStr
方法。
// 将 List<Game> 转成 JSON 字符串
String gameListJson = JSONUtil.toJsonStr(gameList);
复制代码
将 JSON 字符串 转成 List:toList
使用 toList
方法,和 toBean
方法接受的参数一样。
// 将 JSON 字符串 转成 List<Game>
List<Game> gameListFromJson = JSONUtil.toList(gameListJson, Game.class);
复制代码
总结
JSON 转成 Java Bean 使用 toBean
方法,转成 List 使用 toList
方法。
Um ein beliebiges Objekt in JSON zu konvertieren, verwenden Sie toJsonStr
die Methode .
letzte der letzten
Aufgrund der Begrenzung meines Niveaus sind Fehler und Mängel unvermeidlich, 屏幕前的靓仔靓女们
falls Sie welche finden, weisen Sie bitte darauf hin!
Abschließend möchte ich Ihnen danken, dass Sie dies gelesen haben, danke, dass Sie meine Bemühungen ernst nehmen, und hoffe, dass dieser Blog für Sie hilfreich ist!
Du hast leicht einen Daumen nach oben gegeben, das wird der Welt in meinem Herzen einen hellen und schillernden Stern hinzufügen!