Stomp的MessageMap格式完全无法使用吗?

Edw*_*ale 5 php java json activemq-classic stomp

我将Java中的MapMessages发送到ActiveMQ并使用PHP中的Stomp检索它们.我的消息创建代码如下所示:

MapMessage message = session.createMapMessage();
message.setInt("id", 42);
message.setInt("status", 42);
message.setString("result", "aString");
Run Code Online (Sandbox Code Playgroud)

当我在PHP中检索它们时,创建的数组如下所示:

Array (
[map] => Array (
        [0] => Array (
                [entry] => Array (
                        [0] => Array (
                                [string] => id
                                [int] => 42
                            )

                        [1] => Array (
                                [string] => status
                                [int] => 42
                            )

                        [2] => Array (
                                [string] => Array (
                                        [0] => result
                                        [1] => aString
                                    )
                            )
                    )
            )
    )
)
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?有没有办法说服Stomp以合理的方式反序化它,还是有一些PHP咒语让访问这个数组不那么痛苦?特别是,我不能只是迭代条目并构建一个关联数组,因为如果有一个字符串&int而不是两个字符串,那么数组看起来完全不同.

Edw*_*ale 1

这是我的想法。有谁知道更清洁的解决方案?

$entries = $msg->map['map'][0]['entry'];
$map = array();
foreach($entries as $entry) {
    $vals = array_values($entry);
    if(count($vals) == 1 && is_array($vals[0])) {
        $vals = $vals[0];
    }
    $map[$vals[0]] = $vals[1];
}
Run Code Online (Sandbox Code Playgroud)

这给了我:

array
  'id' => int 42
  'status' => int 42
  'result' => string 'aString' (length=7)
Run Code Online (Sandbox Code Playgroud)

这几乎就是我正在寻找的东西,但是到达那里的代码似乎非常脆弱。