JSON 隻是 Javascript 對象表示法。它是一種存儲數據和傳輸數據的文本格式。通常,它會以字符串值對的形式表示。它與語言無關並且可以在任何地方運行。 JSON 表示法包含以下基本元素。因此,框架字節數組(來自它可能已轉換的任何源(即通過靜態文本/Rest API 輸出)),它應該支持正確解析的模式。
對象 | 對象以“{”(左)大括號開始,以“}”(右)大括號結束。 |
---|---|
對象成員 | 成員以逗號分隔,由字符串和值組成。 |
數組 | 數組以“[”(開放)開始,以“]”(結束)大括號結束,它幾乎與數組數據結構相似。在 JSON 數組中,它將是不同值作為 JSON 字符串的集合 |
值 | 值可以是字符串,甚至可以有 JSONArray 或任何對象或簡單的常量。 |
弦樂 |
字符串用雙引號 (“”) 括起來,後跟 Unicode 冒號 (:)。可以有多個成員,每個成員之間用逗號(,)分隔。 值也用逗號 (,) 分隔,並包括以下內容。 true/false/null/字符或常見的反斜杠轉義。 |
任何字符串都可以更改為字節數組,並且任何字節數組都可以通過以下方式輕鬆轉換為字符串。假設我們要采用的字符串是具有上述基本元素的模式。因為現在任何 REST 服務都以 JSON 格式生成輸出。如果模式是受支持的結構,我們可以使用 JSONParser 輕鬆解析它。下麵的示例程序集可用於生成簡潔的 JSONArray 輸出。
示例 1
Java
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;
import java.nio.charset.StandardCharsets;
public class Example1 {
public static void main(String[] args)
{
String geekPortalUserDetails
= "[{\"firstName\":\"GeekA\",\"Posts\":\"100\"},
{
\"firstName\":\"GeekB\",\"Posts\":\"150\"},
{
\"firstName\":\"GeekC\",\"Posts\":\"50\"}]";
// string to byte[]
byte[] userDetailsBytes
= geekPortalUserDetails.getBytes(
StandardCharsets.UTF_8);
// converting the bytes to String
String userDetailsBytesToStrings
= new String(userDetailsBytes,
StandardCharsets.UTF_8);
JsonParser jsonParser = new JsonParser();
// As the byte array details contains
// JSONArray elements, we need to parse the
// output in the form of JsonArray
JsonArray jsonArrayOutput
= (JsonArray)jsonParser.parse(
userDetailsBytesToStrings);
System.out.println("Output : "
+ jsonArrayOutput);
}
}
程序的輸出:
我們可以美化一下,看看輸出結果如下。輸出為 JSON 數組格式
將字節數組轉換為 JSON 的最重要的事情是字節數組應該是使用 JsonParser 解析的模式。現在讓我們看一個 JsonObject 的示例
示例 2
Java
import com.google.gson.*;
import java.nio.charset.StandardCharsets;
public class Example2 {
public static void main(String[] args)
{
String geekPortalUserDetail
= "{\"firstName\": \"GeekA\",\"last_name\": \"GeekA\", \"email_address\": \"geeka@gfg.com\"}";
// string to byte[]
byte[] userDetailsBytes
= geekPortalUserDetail.getBytes(
StandardCharsets.UTF_8);
// converting the bytes to String
String userDetailsBytesToStrings = new String(
userDetailsBytes, StandardCharsets.UTF_8);
JsonParser jsonParser = new JsonParser();
// As the output is of the pattern of JsonObject, it
// has to be converted in this way
JsonObject jsonObjectOutput
= (JsonObject)jsonParser.parse(
userDetailsBytesToStrings);
System.out.println("Output : " + jsonObjectOutput);
}
}
輸出:
我們可以美化並檢查
https://api.exchangerate-api.com/v4/latest/USD 等多個 REST API 會生成 JSONObject/JSONArray 形式的響應。
例子:
我們可以將這些數據作為字節數組保存在數據庫中,並在需要時以 JSON 格式將其取回。
理由:
很少有 REST API 是免費的。許多都是付費的,而且根據 API 數量的不同也有所不同。為了避免這種情況,不要多次點擊 URL,而是從 REST API 獲取響應並將數據作為字節數組存儲在數據庫中(因為響應會很大並且可能包含照片/視頻等)。當我們需要顯示數據時,我們可以從數據庫中獲取字節數組數據,並像上麵的示例程序一樣解析它,並以 JSONArray/JSONObject 的形式獲取。
相關用法
- Java Byte Array轉Image用法及代碼示例
- Java Byte Array轉Object用法及代碼示例
- Java Byte Array轉Writer用法及代碼示例
- Java Byte Array轉Long用法及代碼示例
- Java Byte Array轉String用法及代碼示例
- Java Byte Array轉Hex String用法及代碼示例
- Java Byte compareUnsigned()用法及代碼示例
- Java Byte decode()用法及代碼示例
- Java Byte parseByte()用法及代碼示例
- Java Byte toUnsignedInt()用法及代碼示例
- Java Byte toUnsignedLong()用法及代碼示例
- Java Byte valueOf()用法及代碼示例
- Java Byte byteValue()用法及代碼示例
- Java Byte compare()用法及代碼示例
- Java Byte compareTo()用法及代碼示例
- Java Byte doubleValue()用法及代碼示例
- Java Byte equals()用法及代碼示例
- Java Byte floatValue()用法及代碼示例
- Java Byte hashCode()用法及代碼示例
- Java Byte intValue()用法及代碼示例
- Java Byte longValue()用法及代碼示例
- Java Byte shortValue()用法及代碼示例
- Java Byte toString()用法及代碼示例
- Java ByteArrayOutputStream close()用法及代碼示例
- Java ByteBuffer getDouble()用法及代碼示例
注:本文由純淨天空篩選整理自priyarajtt大神的英文原創作品 Java Program to Convert Byte Array to JSON。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。