首页 > 解决方案 > 我在 JSON 文件中遇到意外错误

问题描述

在 flink 中使用来自 Kafka 的 JSON 文件时,出现此错误:

引起:org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.io.JsonEOFException:意外的输入结束:对象的预期关闭标记(在[来源:(字节[])开始标记“ [{"; line: 1, column: 2]) at [Source: (byte[])"[{"; 行:1,列:5]

这是我的 JSON 文件:

[{
        "locationID": "ASK",
        "temp": 35
    },
    {
        "locationID": "BC",
        "temp": 45
    },
    {
        "locationID":"CHD",
        "temp": 55
    },
    {
        "locationID": "RAJ",
        "temp": 65
    },
    {
        "locationID": "EGY",
        "temp": 55
}]

这是代码:

为什么我不能从中制作一个键控流

标签: jsonscalaapache-kafkasbtapache-flink

解决方案


据我所知,您总是需要输入单行 json 字符串。所以在你的例子中使用这个:

[{"locationID": "ASK", "temp": 35}, {"locationID": "BC", "temp": 45}, {"locationID": "CHD", "temp": 55}, {"locationID": "RAJ", "temp": 65}, {"locationID": "EGY", "temp": 55}]

对于更通用的方法,您可以使用以下内容重新格式化您的多行 json 字符串:

.selectExpr("REPLACE(CAST(value as string), '\n', '') as json")


推荐阅读