首页 > 解决方案 > JSON数组解析Kafka

问题描述

我有以下设置:接受 JSON POST 请求的 Rest 端点:我正在解析请求并将其作为字符串通过 Kafka 发送。但是出现解析错误 A Rest 端点接受 JSON POST 请求:

[ { "Name": "Jack", "Id": "314", "Gender": "M" } , { "Name": "John", "Id": "451", "Gender": "M" }, { "Name": "Rita", "Id": "501", "Gender": "F" } ]

我正在解析请求如下

@RequestMapping(method = RequestMethod.POST, value = "/record")
@ResponseBody
public String process(@RequestBody Map<String, Object>[] payload) throws 
Exception {
    String str = Arrays.toString(payload)
    KafkaProd.toTopic(str);
    System.out.println("Payload: " +str);
    return "Record Processed";
}


str = Arrays.toString(payload) is changing it into the following format
[ { Name = Jack , Id = 314, Gender = M } , { Name = John, Id = 451, 
Gender = M }, { Name = Rita, Id = 501, Gender = F } ]

When I'm trying to parse this string back into json array using json-s 
imple :

 JSONArray jsonArray = new JSONArray(record.value());
 for (int i = 0; i < jsonArray.length(); i++) {
 System.out.println("Json Objects : " 
 +jsonArray.getJSONObject(i).toString());
 }

我收到 JSON 解析错误,因为 record.value() 不是有效的 json 数组

选项 1。如何将其转换为有效的 json 数组?选项2.如何通过kafka以正确的格式发送json数组?

我使用这些选项中的哪一个?

标签: jsonspring-kafka

解决方案


而不是String str = Arrays.toString(payload)使用杰克逊ObjectMapper将地图转换为字符串。


推荐阅读