0

我正在使用一个队列服务,它似乎只允许我发送一个字符串作为消息(有点不认为那是正确的,但无法证明其他),但我需要 3 个不同的数据项来处理我的工作(一个 int、double 和 int[])。因此,我采用所有三种数据类型并将它们转换为使用Arrays.toString.

我的问题是,一旦我的工作进程收到我需要将它们转换回来的消息。工人看到了这一点:[0, 43.0, [0, 59, 16]]但我不确定如何最有效地转换它。我现在这样做的方式是删除第一个和最后一个字符,然后执行 aString[] temp = queue_string.split(",");以将其作为列表返回。

如果这种方式是唯一的方式,我很好,但我想知道是否有更清洁的方式?就像 Arrays.toString有类似的东西 String.toArray(这不存在,我已经尝试过:-)

4

1 回答 1

4

我认为最好使用像 JSON 这样的标准作为在进程之间传输数据的格式。可以轻松地将数据从字符串编组为本地数据类型,然后返回 Java。

Gson gson = new Gson();

int[] sub = { 0, 59, 16 };
Object[] values = { 0, 43.0, sub };
String output = gson.toJson(values);       // => [0, 43.0,[0,59,16]]

Object[] deserialized = gson.fromJson(output, Object[].class);
for ( Object obj : deserialized ) {
    // => 0.0, 43.0, [0.0, 59.0, 16.0]
}
于 2012-04-15T04:55:57.417 回答