知識庫 / Java Array RSS 訂閱

Java中字節數組轉換為JSON及JSON轉換為字節數組的轉換

Java Array,JSON
HongKong
7
09:45 PM · Dec 05 ,2025

1. 引言

數據在不同格式之間的操縱和轉換是大多數編程語言中常見的任務。其中一種場景是字節數組和 JSON 格式之間的轉換。

在本教程中,我們將探討如何將字節數組轉換為 JSON,以及反之亦然,在 Java 中實現。

2. 問題陳述

我們的目標是將 JSON 字符串轉換為字節數組,其中數組的每個元素代表字符串中相應字符的 ASCII 值。反之,我們還尋求將 ASCII 值字節數組轉換回原始 JSON 字符串。

假設我們有以下字節數組:

byte[] byteArray = {
    34, 123, 92, 34, 110, 97, 109, 101, 92, 34, 58, 92, 34, 65, 108,
    105, 99, 101, 92, 34, 44, 92, 34, 97, 103, 101, 92, 34, 58, 50, 53, 44, 92,
    34, 105, 115, 83, 116, 117, 100, 101, 110, 116, 92, 34, 58, 116, 114, 117,
    101, 44, 92, 34, 104, 111, 98, 98, 105, 101, 115, 92, 34, 58, 91, 92, 34,
    114, 101, 97, 100, 105, 110, 103, 92, 34, 44, 92, 34, 112, 97, 105, 110,
    116, 105, 110, 103, 92, 34, 93, 44, 92, 34, 97, 100, 100, 114, 101, 115,
    115, 92, 34, 58, 123, 92, 34, 99, 105, 116, 121, 92, 34, 58, 92, 34, 83,
    109, 97, 108, 108, 118, 105, 108, 108, 101, 92, 34, 44, 92, 34, 122, 105,
    112, 99, 111, 100, 101, 92, 34, 58, 92, 34, 49, 50, 51, 52, 53, 92, 34, 125, 125, 34
};

此字節數組對應於以下 JSON 字符串:

String jsonString = "{\"name\":\"Alice\",\"age\":25,\"isStudent\":true,\"hobbies\":
[\"reading\",\"painting\"],\"address\":{\"city\":\"Smallville\",\"zipcode\":\"12345\"}}";
{
  "text": "This JSON string is visually represented as:"
}
{
  "name": "Alice",
  "age": 25,
  "isStudent": true,
  "hobbies": ["reading", "painting"],
  "address": {
    "city": "Smallville",
    "zipcode": "12345"
  }
}

接下來,我們將探討幾種實現字節數組與JSON字符串之間轉換的方法。

3. 將字節數組轉換為 JSON

將字節數組轉換為 JSON 是一種在 Java 中處理數據交換時至關重要的操作。此外,實現這一轉換有多種方法。

3.1. 使用標準庫

我們可以利用 Jackson 作為標準庫。 這是一個使用 Jackson 將字節數組轉換為 JSON 的簡單示例:

@Test
void givenByteArray_whenConvertingToJsonUsingJackson_thenJsonString() throws Exception {
    ObjectMapper objectMapper = new ObjectMapper();
    String actualJsonString = objectMapper.readValue(byteArray, String.class);

    assertEquals(jsonString, actualJsonString);
}

在本示例中,我們創建了一個 ObjеctMappеr 對象。然後我們使用 rеadValuе() 方法將 bytеArray 轉換為 JSON 字符串。之後,我們使用 assеrtEquals 方法將 actualJsonString 與預期的 jsonString 進行比較,以確保轉換正確執行。

3.2. 使用外部庫

除了標準庫之外,還有外部庫提供額外的功能和自定義選項。Gson 就是其中之一。

以下是一個使用 Gson 的示例,用於實現轉換:

@Test
void givenByteArray_whenConvertingToJsonUsingGson_thenJsonString() {
    Gson gson = new Gson();
    String jsonStringFromByteArray = new String(byteArray, StandardCharsets.UTF_8);
    String actualJsonString = gson.fromJson(jsonStringFromByteArray, String.class);

    assertEquals(jsonString, actualJsonString);
}

在這裏,我們創建了一個 Gson 對象。然後,我們使用 String 構造函數(編碼指定為 UTF-8)將 byteArray 轉換為字符串。此外,我們使用 fromJson() 方法將 byteArray 轉換為 JSON 字符串。

4. 將 JSON 轉換為字節數組

就像將字節數組轉換為 JSON 一樣,將 JSON 數據轉換回字節數組對於處理各種數據場景至關重要。

4.1. 使用標準庫

Java 的標準庫,如 Jackson,也支持將 JSON 字符串轉換為字節數組。 下面是一個示例:

@Test
void givenJsonString_whenConvertingToByteArrayUsingJackson_thenByteArray() throws JsonProcessingException {
    ObjectMapper objectMapper = new ObjectMapper();
    byte[] actualByteArray = objectMapper.writeValueAsBytes(jsonString);

    assertEquals(Arrays.toString(byteArray), Arrays.toString(actualByteArray));
}

在此示例中,我們使用 writeValueAsBytes() 方法將類級別定義的 jsonString 轉換為字節數組。

4.2. 使用外部庫

外部庫,例如 Gson,也可用於將 JSON 轉換為字節數組。 這是一個示例:

@Test
void givenJsonString_whenConvertingToByteArrayUsingGson_thenByteArray() {
    Gson gson = new Gson();
    byte[] actualByteArray = gson.toJson(jsonString).getBytes();

    assertEquals(Arrays.toString(byteArray), Arrays.toString(actualByteArray));
}

在此,我們使用 toJson() 方法來完成轉換。

5. 結論

綜上所述,理解字節數組到JSON轉換及其反向轉換對於Java中的靈活數據處理至關重要。無論是使用標準的庫,如Jackson,還是外部庫,如Gson,我們都可以高效地管理應用程序中的數據交換。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.