我在JSON
中返回了一个Byte数组。
JSON
[{"template":167,255,1,30,179,0,218,0,2,88,1,184,0],
"template2":null,
"template3":null,
"Client_Id":1160739}]
在Java中,如何恢复此字节数组?
我尝试在JSON
中返回一个String而不是字节数组,但是当我转换为byte时,它将改变我需要的值。例如,167是我需要的值,因为这已经是字节值,但如果我尝试将167转换为byte,它将返回另一个值,所以我需要将其恢复为字节值。
JAVA
ArrayList<JSONObject> vetor = ArrayJson(client);
byte[] template = (byte[])vetor.get(0).get("template");
我正在使用json.org/java存储库来构造json助手类。
答案 0 :(得分:1)
byte
数据类型适用于256个不同的数字 - 但是,在java中,当您使用字节时,它们被解释为带符号的二进制补码数。这很可能发生在你身上。请注意,位模式不会更改,只会更改输出。
您可以使用b
(b & 0xff)
中的无符号值
答案 1 :(得分:0)
JSON没有字节概念,所以你拥有的是一组数字。
您可以通过将每个数字转换为byte
来迭代它们并构建一个字节数组。
假设您使用所选的JSON库将数组数组放入int[]
数组中,只需执行以下操作:
int[] numbers = ...
byte[] bytes = new byte[numbers.length];
for (int i=0; i<numbers.length;i++) {
bytes[i] = (byte)numbers[i];
}
答案 2 :(得分:0)
这是代码:
这些类存在于org.json
包中。
String jsonString = "{'template':[167,255,1,30,17,1,204,0,1,237,0,128,0] }";
JSONObject jObject = new JSONObject(jsonString);
JSONArray jArray = jObject.getJSONArray("template");
byte[] array = new byte[jArray.length()];
for(int i = 0; i < jArray.length(); i++) {
array[i] = (byte)jArray.getInt(i);
}