从JSON获取Byte

时间:2013-10-28 13:32:47

标签: java json

我在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助手类。

3 个答案:

答案 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);
}