繁体   English   中英

JSON 到 Mule 4 中的平面文件?

[英]JSON to flat file in Mule 4?

我有一个简单的要求,即在 Mule 4 中将输入 JSON 转换为平面文件,但我无法在网上找到任何可靠的示例。 我开始创建示例架构如下,但它不起作用。

test.ffd 架构:

form: FLATFILE
id: 'test'
tag: '1'
name: Request Header Record
values:
- { name: 'aa', type: String, length: 10 }
- { name: 'bb', type: String, length: 8 }
- { name: 'cc', type: String, length: 4 }

数据编织:

%dw 2.0
output application/flatfile schemaPath='test.ffd'
---
{
    aa : payload.a,
    bb : payload.b,
    cc : payload.c
}

输入 JSON:

{
  "a": "xxx",
  "b": "yyy",
  "c": "zzz"
}

但它没有说

Message               : "java.lang.IllegalStateException - Need to specify structureIdent or schemaIdent in writer configuration, while writing FlatFile at 
4| {
 |  ...
8| }

我该如何正确地做到这一点?

假设您正在尝试输出一个固定宽度的文件,它看起来像您一样,请更改

form: FLATFILE

form: FIXEDWIDTH

请记住,仅当您只有一个结构时,才能使用此 FFD。 你可以传入:

    payload map {
        aa: $.a,
        ...
    }

如果您有一个集合并且它仍然可以工作,但是如果您需要多个结构,您将无法使用速记模式。

并解释为什么会出现此错误,请查看这些文档,阅读“Writer 属性(用于平面文件)”:

https://docs.mulesoft.com/mule-runtime/4.2/dataweave-formats#writer_properties_flat_file

错误消息告诉您遗漏了什么。

需要在 writer 配置中指定 structureIdent 或 schemaIdent

添加其中之一,它 flatfile 或 fixedwidth 应该可以正常工作。

例如,添加segmentIdent

%dw 2.0
output application/flatfile schemaPath = "test1.ffd",
 segmentIdent = "test1"
---
payload map (a, index) -> {
    aa: a.a,
    bb: a.b,
    cc: a.c
}

良好的预览效果

以下是如何正确使用 FIXEDWIDTH 的示例https://simpleflatservice.com/mule4/FixedWidthSchemaTransformation.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM