一、json轉string
將json轉為string是在數據交互過程中非常常見的操作,利用Json庫提供的toJson()方法,可以將json對象轉化為對應的string。
JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("name", "John"); jsonObject.addProperty("age", 25); String jsonString = jsonObject.toString();
toJson 方法提供了多種重載方法,可以用來指定輸出的格式、過濾器、日期格式等。
二、jsonobject轉list
將jsonobject轉為list可以使用GSON庫來實現,以下是示例代碼:
JsonArray jsonArray = jsonObject.getAsJsonArray("students"); Type type = new TypeToken<List<Student>>() {}.getType(); List<Student> studentList = new Gson().fromJson(jsonArray, type);
需要注意的是,如果json中的數據類型與要轉換的類型不一致,那麼轉換會失敗,因此在編寫具體代碼時需注意保持數據類型一致性。
三、jsonstring轉map
將jsonstring轉化為map需要使用Json庫提供的fromJson() 或者 fromJsonTree()方法,並結合TypeToken以及JsonElement對象來實現:
Gson gson = new Gson(); JsonElement element = gson.fromJson(jsonString, JsonElement.class); JsonObject object = element.getAsJsonObject(); Set<Map.Entry<String, JsonElement>> entrySet = object.entrySet(); Type type = new TypeToken<Map<String, Object>>(){}.getType(); Map<String, Object> resultMap = new HashMap<>(); for(Map.Entry<String, JsonElement> entry : entrySet) { resultMap.put(entry.getKey(), gson.fromJson(entry.getValue(), type)); }
以上實現方式將jsonString轉化為JsonObject後遍歷將其中的key與值(一個字符串)插入到Map中並返回。
四、jsonstringify作用
jsonstringify 是一個用於將 JavaScript 對象轉換為 JSON 字符串的方法。在Java中可以使用Json庫的toJson()方法來實現序列化。
String personJson = new Gson().toJson(person);
五、jsonobject轉map
將jsonobject轉為map是一個比較常見的步驟,可以使用Json庫提供的fromJson() 方法結合TypeToken以及JsonElement對象來實現:
JsonElement jsonElement = new JsonParser().parse(jsonObject); Type type = new TypeToken<Map<String, Object>>(){}.getType(); Map<String, Object> resultMap = dp.fromJson(jsonElement, type);
以上實現方式將JsonObject 轉化為 JsonElement後將其中的key與值插入到Map中並返回。
六、jsonnode轉string
JsonNode是jackson庫提供的一種更加抽象的JSON樹狀結構。將jsonnode轉為string可以使用ObjectMapper對象的writeValueAsString()方法實現:
ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(jsonNode);
七、json轉protobuf
protobuf是一種輕便、高效、語言無關且可擴展的序列化框架。我們可以使用Gson庫結合Protobuf庫提供的JsonFormat將json轉化為protobuf。示例代碼如下:
Person person = new Person.Builder() .setId(12345) .setName("John") .setEmail("john@abc.com") .addPhone( Person.PhoneNumber.newBuilder() .setNumber("1234567890") .setType(Person.PhoneType.HOME)) .build(); //protobuf to json JsonFormat.Printer printer = JsonFormat.printer().omittingInsignificantWhitespace(); String jsonString = printer.print(person); //json to protobuf JsonFormat.Parser parser = JsonFormat.parser(); Person.Builder builder = Person.newBuilder(); parser.merge(jsonString, builder); Person person = builder.build();
以上示例代碼中,我們展示了如何將protobuf對象轉換為json字符串,並將json字符串轉換回protobuf對象。結合和Gson庫提供的Json方法,我們可以將json轉換為protobuf,或者將protobuf轉換為json。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/311173.html