簡體   English   中英

將 Kafka 消息覆蓋到 java object

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM