0

我的JSON.

JSON

[{"template":167,255,1,30,179,0,218,0,2,88,1,184,0], "template2":null, "template3":null, "Client_Id":1160739}]

在Java中,我怎样才能恢复这个字节数组?

我尝试在字节数组中返回一个字符串JSON,但是当我转换为字节时,它会改变我需要的值。例如,167 是我需要的值,因为这已经是字节值,但是如果我尝试将 167 转换为字节,它将返回另一个值,所以我需要将其恢复为字节值。

JAVA

ArrayList<JSONObject> vetor = ArrayJson(client);
byte[] template = (byte[])vetor.get(0).get("template");

我正在使用json.org/java存储库来构造 json 帮助器类。

4

3 回答 3

1

byte数据类型适用于 256 个不同的数字 - 然而,在 Java 中,当您使用字节时,它们被解释为带符号的二进制补码。这很可能是发生在你身上的事情。请注意,位模式没有改变,只有输出改变。

您可以使用以下方法恢复字节中的无符号b(b & 0xff)

于 2013-10-28T13:46:41.937 回答
0

JSON 没有字节的概念,所以你拥有的是一个数字数组。您可以遍历它们并通过将每个数字转换为byte.

假设您int[]使用选择的 JSON 库将数字数组放入数组中,只需执行以下操作:

int[] numbers = ...
byte[] bytes = new byte[numbers.length];
for (int i=0; i<numbers.length;i++) {
    bytes[i] = (byte)numbers[i];
}
于 2013-10-28T13:46:53.147 回答
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);
}
于 2013-10-28T13:48:24.203 回答