Core will not JSONify data, it will automatically de-jsonify data that is returned with JSON encoding in the content type header.

A message's body needs to be a string. This is a requirement of the API. The following JSON is valid:

```js
{
  "body": "my message"
}
```

The following JSON is not valid:

```js
{
  "body": {"key": "value"}
}
```

See the difference? It has to be

```js
{
  "body": "{\"key\": \"value\"}"
}
```

Because MQ only supports strings for message bodies. So if you have a message whose body is set to a dict, it's going to be JSON encoded as a JSON object, not a JSON string, because JSON encoders know nothing about our API requirements. We'd have to detect non-JSON-primitive types (strings, ints, anything I'm missing?) and double JSON-encode anything else. Make sense?

If you don't believe me, try sending a message that has a body of a dict using the library as-is.