[英]How to produce a json object message into kafka topic using java(spring)?
[英]Coverting a Kafka message into java object
我正在嘗試將作為字符串列表接收的 kafka 消息轉換為 Json object。
以下是我的代碼片段:
//Kafka consuming msg
List<String> message = KafkaMessageConsumer.consumeMessage(props.getProperty("pickbegin.topicname"));
System.out.println("Message:" +message);
我從卡夫卡收到消息:
Message:[{
"orders": [
{
"orderId": "784",
"orderPriority": "REGULAR",
"userId": "123"
}
]
現在我試圖轉換成 Java object:
我的 Pojo 課程如下:
@Data
public class PickBeginJson {
@JsonProperty("orders")
private List<Order> mOrders;
}
另一個 POJO class 是:
@Data
public class Order {
@JsonProperty("orderId")
private String mOrderId;
@JsonProperty("orderPriority")
private String mOrderPriority;
@JsonProperty("userId")
private String mUserId;
}
我試圖轉換為 Java object 的代碼片段如下:
//Json to java object
Gson gson = new Gson();
for(String i : message)
{
JsonReader reader = new JsonReader(new StringReader(i));
reader.setLenient(true);
pickBeginJson = gson.fromJson(i, PickBeginJson.class);
System.out.println("pickBeginJson"+pickBeginJson);
}
我遇到了一個例外:
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object at line 6 column 4 path $.orders[0].
我還使用 ObjectMapper 作為:
for(String i : message)
{
pickBeginJson = objectMapper.readValue(i, PickBeginJson.class);
System.out.println("pickBeginJson"+pickBeginJson);
}
但我遇到了一個例外:
com.fasterxml.jackson.databind.JsonMappingException: Unexpected character ('"' (code 34)): was expecting comma to separate Object entries
at [Source: (String)"{
"orders": [
{
"orderId": "784",
"orderPriority": "REGULAR"
"userId": "123"
}
]
}
任何幫助將不勝感激。
我已經看到您的問題,它是錯誤消息所述的格式錯誤的 JSON。 在 Kafka 消息中查看您的 JSON:
{
"orders": [
{
"orderId": "784",
"orderPriority": "REGULAR"
"userId": "123"
}
]
如果您仔細觀察會發現它在“orderId”和“orderPriority”之間缺少一個逗號。 此外,它缺少 JSON 末尾的右括號“}”。
你的 JSON 應該是這樣的:
{
"orders":[
{
"orderId":"784",
"orderPriority":"REGULAR",
"userId":"123"
}
]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.