Hi,

目前Json Format的实现就是假设json最外层是一个json object,暂时还无法做到顶层的所有字段无限扩展。

如果是在SQL里面,可以直接定义成map类型就可以,比如:
```SQL
CREATE TABLE source (
  d MAP<VARCHAR, VARCHAR>
) WITH (...)
```

Zhao,Yi(SEC) <[email protected]> 于2020年8月11日周二 下午4:58写道:

> 刚刚进一步发现一个方法可以做动态扩展的类型。代码如下:
>
>     这种情况下,首先表有一个字段d,然后d是json无限嵌套的类型都可以。
>     此处有第一个疑问:如何不要d这个字段,让顶层就是一个无限扩展的map结构呢?
>
>         stEnv.connect(
>                 new Kafka()
>                         .properties(TestKafkaUtils.getKafkaProperties())
>                         .version("universal")
>                         .topic("test")
>                         .startFromLatest()
>         ).withFormat(new Json()
>                 .failOnMissingField(false)
>         ).withSchema(
>                 new Schema()
>                         .field("d", TypeInformation.of(Map.class))
>         ).inAppendMode().createTemporaryTable("t");
>
>     其次,这种效果我打印了下table的schema如下,其中d的类型是LEGACY('RAW',
> 'ANY<java.util.Map>'),貌似是某种兼容类型。此处第二个疑问,通过SQL方式如何创建这种结构呢?
>     root
>     |-- d: LEGACY('RAW', 'ANY<java.util.Map>')
>
>
> 在 2020/8/11 下午4:23,“zhao liang”<[email protected]> 写入:
>
>     Hi,你图挂了,换个图床试试呢
>
>     发件人: Zhao,Yi(SEC) <[email protected]>
>     日期: 星期二, 2020年8月11日 16:04
>     收件人: [email protected] <[email protected]>
>     主题: 关于FLinkSQL如何创建类json无限扩展的表结构问题
>     刚刚进一步发现一个方法可以做动态扩展的类型。代码如下:
>     [cid:[email protected]]
>     这种情况下,首先表有一个字段d,然后d是json无限嵌套的类型都可以。
>     此处有第一个疑问:如何不要d这个字段,让顶层就是一个无限扩展的map结构呢?
>
>
>     其次,这种效果我打印了下table的schema如下,其中d的类型是LEGACY('RAW',
> 'ANY<java.util.Map>'),貌似是某种兼容类型。此处第二个疑问,通过SQL方式如何创建这种结构呢?
>     root
>     |-- d: LEGACY('RAW', 'ANY<java.util.Map>')
>
>
>

-- 

Best,
Benchao Li

回复