我假设 Car、Airplane 和 Boat 是简单的 JavaBeans 类,并且它们的字段成员映射 json 合约。
您可以使用 json 编解码器将对象序列化为 JSON。例如,您可以使用Jackson 或gson。
类:
class Car {
private String model;
public String getModel(){};
public void setModel(String model){...};
}
class Airplane {
private String model;
public String getModel(){};
public void setModel(String model){...};
}
class Boat {
private String model;
public String getModel(){};
public void setModel(String model){...};
}
该示例将使用 Jackson 并将输出如下结构:
{"car":{"model":"xxx"},"boat":{"model":"xxx"}, ,"airplane":{"model":"xxx"}}
// Create the jsonFactory with an object mapper to serialize object to json
JsonFactory jsonFactory = new JsonFactory(new ObjectMapper());
// Create the byte array output stream
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
// Create the json generator
JsonGenerator generator = jsonFactory.createGenerator(outputStream);
// Write the start object, ie. {}
generator.writeStartObject();
// Write the car "car":{}
generator.writeObjectField("car" , car);
// Write the car "boat":{}
generator.writeObjectField("boat" , boat);
// Write the car "airplane":{}
generator.writeObjectField("airplane" , airplane);
// Close the object
generator.writeEndObject();
// And the generator
generator.close();
// Convert the byte array stream to a byte array and publish the message
channel.basicPublish(outputStream.toByteArray());
如果你有一个 JavaBeans 或一个包装了这 3 个类的映射,那么代码可能会更简单:
ObjectMapper mapper = new ObjectMapper();
byte[] bur = mapper.writeValueAsBytes(wrapper);
channel.basicPublish(outputStream.toByteArray());
最后,在 c# 方面,您应该创建相同的类和deserialize them。
您可以使用一些 json 到 java/c# 生成器,例如。 jsonschema2pojo。