我将JSON对象转换为字节时遇到问题。我需要这样的东西:
aJsonObject = new JSONObject();
// ...put somethin
string msg;
msg = aJsonObject.toString();
count = msg.countBytes(); //calculate how many bytes will string `msg` take
然后我需要将count
转换为2元素字节数组(实际上我需要将16位int发送到套接字),将msg
转换为count-element字节数组,将它们链接在一起并发送到TCP套接字。
最让我感到高兴的是将count
放在正好16位上。
我需要反过来做同样的事情。取2个字节,使它们成为int,然后从socket读取int-bytes,最后将它们转换为json。
我将不胜感激任何帮助。提前谢谢。
答案 0 :(得分:0)
Java String
使用UTF-16编码。要将String
转换为字节数组,只需调用String.getBytes()
方法,指定所需的字节编码,例如UTF-8。然后阅读阵列length
。
aJsonObject = new JSONObject();
// fill JSON as needed...
String msg = aJsonObject.toString();
byte[] bytes = msg.toBytes(StandardCharsets.UTF_8);
int count = bytes.length;
// use length and bytes as needed...
要反转该过程,只需将字节传递给String
构造函数,指定相同的字节编码:
bytes[] bytes = ...;
String msg = new String(bytes, StandardCharsets.UTF_8);
// use msg as needed...