Mule Dataweave 2.0中Excel到Json的映射

Mule Dataweave 2.0中Excel到Json的映射,mule,mule-studio,dataweave,mulesoft,anypoint-platform,Mule,Mule Studio,Dataweave,Mulesoft,Anypoint Platform,我有一张excel表格。我希望将其映射到json配置文件 我想转换成类似json的格式 [ { "Scope" : { "Content owner" : "", "Language" : "", "Territory" : "" }, "Title" : {

我有一张excel表格。我希望将其映射到json配置文件

我想转换成类似json的格式

[
  {
    "Scope" : {
        "Content owner" : "",
        "Language" : "",
        "Territory" : ""
    },
    "Title" : {
        "Content ID" : "",
        "Billing ID" : "",
        "IMDB" : "",
        "Name" : "",
        "Episode Number" : "",
        "Episode Sequence" : "",
        "Container Position" : "",
        "Run Length" : "",
        "Work Type" : "",
        "Short Synopsis" : "",
        "Long Synopsis" : "",
        "Original Language" : "",
        "Rating Set1" : "",
        "Rating Set2" : "",
        "Rating Set3" : "",
        "Rating Set4" : "",
        "Rating Set5" : "".....
像这样。。。行将是主对象,下一行将是第二个对象。。。接下来要映射实际数据。我试过了,但无法动态获取。我使用了一些静态索引值,但对结果不满意

谢谢你的帮助


谢谢大家!

Dataweave无法以动态方式100%解决此问题。您可以尝试使用以下表达式:

%dw 2.0
output application/json
//endIndex: use -1 to include all remaining fields
fun addFields(item, startColIdx, endColIdx) = 
    (item pluck (value, key, index) -> (key): value) filter ($$ >= startColIdx and (endColIdx == -1 or $$ <= endColIdx)) reduce ($$ ++ $)
---
payload map(item, index) -> {
    'Scope': addFields(item, 0, 2),
    'Title': addFields(item, 3, -1)
}
%dw 2.0
输出应用程序/json
//endIndex:使用-1包含所有剩余字段
趣味添加字段(项目、StartClidx、endColIdx)=
(项目提取(值、键、索引)->(键):值)过滤器($$>=startClidx和(endColIdx==-1或$$){
“范围”:添加字段(项,0,2),
“标题”:添加字段(项目,3,-1)
}
您可以使用上述表达式的另一个版本,但不考虑开始和结束列索引,可以考虑起始列索引和列计数(从索引0开始获得3列,而不是从列索引0到列索引2获得列):

%dw 2.0
输出应用程序/json
//endIndex:使用-1包含所有剩余的列
乐趣添加字段(项目、StartClidX、colCnt)=
(项目提取(值、键、索引)->(键):值)过滤器($$>=StartClidX和(colCnt==-1或$${
“范围”:添加字段(项,0,3),
“标题”:添加字段(项目,3,-1)
}

Dataweave无法以100%动态方式解决此问题。您可以尝试使用以下表达式:

%dw 2.0
output application/json
//endIndex: use -1 to include all remaining fields
fun addFields(item, startColIdx, endColIdx) = 
    (item pluck (value, key, index) -> (key): value) filter ($$ >= startColIdx and (endColIdx == -1 or $$ <= endColIdx)) reduce ($$ ++ $)
---
payload map(item, index) -> {
    'Scope': addFields(item, 0, 2),
    'Title': addFields(item, 3, -1)
}
%dw 2.0
输出应用程序/json
//endIndex:使用-1包含所有剩余字段
趣味添加字段(项目、StartClidx、endColIdx)=
(项目提取(值、键、索引)->(键):值)过滤器($$>=startClidx和(endColIdx==-1或$$){
“范围”:添加字段(项,0,2),
“标题”:添加字段(项目,3,-1)
}
您可以使用上述表达式的另一个版本,但不考虑开始和结束列索引,可以考虑起始列索引和列计数(从索引0开始获得3列,而不是从列索引0到列索引2获得列):

%dw 2.0
输出应用程序/json
//endIndex:使用-1包含所有剩余的列
乐趣添加字段(项目、StartClidX、colCnt)=
(项目提取(值、键、索引)->(键):值)过滤器($$>=StartClidX和(colCnt==-1或$${
“范围”:添加字段(项,0,3),
“标题”:添加字段(项目,3,-1)
}

DataWeave不支持开箱即用。只支持单行标题。我可能可以为它创建一些自定义逻辑。DataWeave不支持开箱即用。只支持单行标题。我可能会为它创建一些自定义逻辑。非常感谢…它很有帮助。非常感谢…它很有帮助。