Json /字符串/字节转换操作(将字节发送到套接字)

时间:2018-01-19 16:47:53

标签: java android json sockets

我将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。

我将不胜感激任何帮助。提前谢谢。

1 个答案:

答案 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...