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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。