将字符串数组映射到单个数组
Map string array into individual arrays
我正在尝试为批量 API 消息正文操纵我的有效负载,同时更新多个图像。例如这里我有两张图片:
[
{
"entry": {
"media_type": "image",
"position": [
"1",
"2"
],
"disabled": false,
"types": {
"image",
"small_image",
"thumbnail"
},
"content": {
"base64_encoded_data": [
"/9j/4ReLRXhpZgAATU0AKgAAAAgA....",
"/9j/4ReLRXhpZgAATU0AKgAAAAgA...."],
"type": "image/jpeg",
"name": [
"228186_1.jpg",
"228187_2.jpg"
]
},
"sku": [
"228186",
"228187"
]
}
}
]
但我需要将它们显示为彼此下方的两个单独条目...如何将其拆分为单独的条目,以便对于位置和 sku 等它只显示一个条目?最终我会想用它来列出彼此下面的几个图像的数据来更新 via bulk API.
这是我想要的输出
[
{
"entry": {
"media_type": "image",
"disabled": false,
"position": 1,
"types": [
"image",
"small_image",
"thumbnail"
],
"content": {
"base64EncodedData": ["/9j/4ReLRXhpZgAATU0AKgAAAAgA....],
"type": "image/png",
"name": "228186_1.jpg"
}
},
"sku": "228186"
},
{
"entry": {
"media_type": "image",
"disabled": false,
"position": 2,
"types": [
"image",
"small_image",
"thumbnail"
],
"content": {
"base64EncodedData": ["/9j/4ReLRXhpZgAATU0AKgAAAAgA....],
"type": "image/jpeg,
"name": "228187_2.jpg"
}
},
"sku": "228187"
}
]
谢谢!
假设您的意思是您的负载看起来像这样,我在这里进行一些猜测...
{
"entry":{
"media_type":"image",
"position":[
"1",
"2"
],
"disabled":false,
"types":[
"image",
"small_image",
"thumbnail"
],
"content":{
"base64_encoded_data":[
"/9j/4ReLRXhpZgAATU0AKgAAAAgA....",
"/9j/8ReLRXhpZgAATU0AKgAAAAgA...."
],
"type":"image/jpeg",
"name":[
"228186_1.jpg",
"228187_2.jpg"
]
},
"sku":[
"228186",
"228187"
]
}
}
然后还要猜测你想要的输出的形状...
%dw 2.0
output application/json
var indices = payload.entry.position map ($ as Number) - 1
---
indices map {
(payload.entry - "content" - "sku" - "position"),
position: payload.entry.position[$],
content: {
base64_encoded_data: payload.entry.content.base64_encoded_data[$],
"type": payload.entry.content."type",
name: payload.entry.content.name[$]
},
sku: payload.entry.sku[$]
}
我可以确定的是,我们是否可以依赖位置对象作为它们在有效负载中的位置,或者表示其他含义。您也可以将其更改为 var indices = 0 to sizeOf(payload.entry.position) - 1
创建:
[
{
"media_type": "image",
"position": "1",
"disabled": false,
"types": [
"image",
"small_image",
"thumbnail"
],
"content": {
"base64_encoded_data": "/9j/4ReLRXhpZgAATU0AKgAAAAgA....",
"type": "image/jpeg",
"name": "228186_1.jpg"
},
"sku": "228186"
},
{
"media_type": "image",
"position": "2",
"disabled": false,
"types": [
"image",
"small_image",
"thumbnail"
],
"content": {
"base64_encoded_data": "/9j/8ReLRXhpZgAATU0AKgAAAAgA....",
"type": "image/jpeg",
"name": "228187_2.jpg"
},
"sku": "228187"
}
]
通过保留顺序使与迈克尔·琼斯相同的有效载荷假设更精确
如果您输入的是对象数组,请使用:
%dw 2.0
import * from dw::util::Values
output application/json
---
flatten(payload map(v1, k1) ->
(v1.entry.position) map(v2, k2) ->
entry:{
"media_type": v1.entry.media_type,
"position": v1.entry.position[k2],
"disabled":v1.entry.disabled,
"types": v1.entry.types,
"content": {
"base64_encoded_data": v1.entry.content.base64_encoded_data,
"type": v1.entry.content."type",
"name": v1.entry.content.name[k2]
},
"sku": v1.entry.sku[k2]
})
请注意,在您输入的“类型”中,您给出的是
"types": {
"image",
"small_image",
"thumbnail"
}
字符串对象,不正确。一个对象总是有键和值,所以我假设它是这样的:
"types": [
"image",
"small_image",
"thumbnail"
]
如果您的输入是对象的对象,您可以使用:
%dw 2.0
output application/json
var indices = payload.entry.position map ($ as Number) - 1
---
indices map entry:{
(payload.entry - "content" - "sku" - "position" - "disabled" - "types"),
position: payload.entry.position[$],
(payload.entry - "content" - "sku" - "position" - "media_type" - "types"),
(payload.entry - "content" - "sku" - "position" - "disabled" - "media_type"),
content: {
base64_encoded_data: payload.entry.content.base64_encoded_data[$],
"type": payload.entry.content."type",
name: payload.entry.content.name[$]
},
sku: payload.entry.sku[$]
}
我正在尝试为批量 API 消息正文操纵我的有效负载,同时更新多个图像。例如这里我有两张图片:
[
{
"entry": {
"media_type": "image",
"position": [
"1",
"2"
],
"disabled": false,
"types": {
"image",
"small_image",
"thumbnail"
},
"content": {
"base64_encoded_data": [
"/9j/4ReLRXhpZgAATU0AKgAAAAgA....",
"/9j/4ReLRXhpZgAATU0AKgAAAAgA...."],
"type": "image/jpeg",
"name": [
"228186_1.jpg",
"228187_2.jpg"
]
},
"sku": [
"228186",
"228187"
]
}
}
]
但我需要将它们显示为彼此下方的两个单独条目...如何将其拆分为单独的条目,以便对于位置和 sku 等它只显示一个条目?最终我会想用它来列出彼此下面的几个图像的数据来更新 via bulk API.
这是我想要的输出
[
{
"entry": {
"media_type": "image",
"disabled": false,
"position": 1,
"types": [
"image",
"small_image",
"thumbnail"
],
"content": {
"base64EncodedData": ["/9j/4ReLRXhpZgAATU0AKgAAAAgA....],
"type": "image/png",
"name": "228186_1.jpg"
}
},
"sku": "228186"
},
{
"entry": {
"media_type": "image",
"disabled": false,
"position": 2,
"types": [
"image",
"small_image",
"thumbnail"
],
"content": {
"base64EncodedData": ["/9j/4ReLRXhpZgAATU0AKgAAAAgA....],
"type": "image/jpeg,
"name": "228187_2.jpg"
}
},
"sku": "228187"
}
]
谢谢!
假设您的意思是您的负载看起来像这样,我在这里进行一些猜测...
{
"entry":{
"media_type":"image",
"position":[
"1",
"2"
],
"disabled":false,
"types":[
"image",
"small_image",
"thumbnail"
],
"content":{
"base64_encoded_data":[
"/9j/4ReLRXhpZgAATU0AKgAAAAgA....",
"/9j/8ReLRXhpZgAATU0AKgAAAAgA...."
],
"type":"image/jpeg",
"name":[
"228186_1.jpg",
"228187_2.jpg"
]
},
"sku":[
"228186",
"228187"
]
}
}
然后还要猜测你想要的输出的形状...
%dw 2.0
output application/json
var indices = payload.entry.position map ($ as Number) - 1
---
indices map {
(payload.entry - "content" - "sku" - "position"),
position: payload.entry.position[$],
content: {
base64_encoded_data: payload.entry.content.base64_encoded_data[$],
"type": payload.entry.content."type",
name: payload.entry.content.name[$]
},
sku: payload.entry.sku[$]
}
我可以确定的是,我们是否可以依赖位置对象作为它们在有效负载中的位置,或者表示其他含义。您也可以将其更改为 var indices = 0 to sizeOf(payload.entry.position) - 1
创建:
[
{
"media_type": "image",
"position": "1",
"disabled": false,
"types": [
"image",
"small_image",
"thumbnail"
],
"content": {
"base64_encoded_data": "/9j/4ReLRXhpZgAATU0AKgAAAAgA....",
"type": "image/jpeg",
"name": "228186_1.jpg"
},
"sku": "228186"
},
{
"media_type": "image",
"position": "2",
"disabled": false,
"types": [
"image",
"small_image",
"thumbnail"
],
"content": {
"base64_encoded_data": "/9j/8ReLRXhpZgAATU0AKgAAAAgA....",
"type": "image/jpeg",
"name": "228187_2.jpg"
},
"sku": "228187"
}
]
通过保留顺序使与迈克尔·琼斯相同的有效载荷假设更精确
如果您输入的是对象数组,请使用:
%dw 2.0
import * from dw::util::Values
output application/json
---
flatten(payload map(v1, k1) ->
(v1.entry.position) map(v2, k2) ->
entry:{
"media_type": v1.entry.media_type,
"position": v1.entry.position[k2],
"disabled":v1.entry.disabled,
"types": v1.entry.types,
"content": {
"base64_encoded_data": v1.entry.content.base64_encoded_data,
"type": v1.entry.content."type",
"name": v1.entry.content.name[k2]
},
"sku": v1.entry.sku[k2]
})
请注意,在您输入的“类型”中,您给出的是
"types": {
"image",
"small_image",
"thumbnail"
}
字符串对象,不正确。一个对象总是有键和值,所以我假设它是这样的:
"types": [
"image",
"small_image",
"thumbnail"
]
如果您的输入是对象的对象,您可以使用:
%dw 2.0
output application/json
var indices = payload.entry.position map ($ as Number) - 1
---
indices map entry:{
(payload.entry - "content" - "sku" - "position" - "disabled" - "types"),
position: payload.entry.position[$],
(payload.entry - "content" - "sku" - "position" - "media_type" - "types"),
(payload.entry - "content" - "sku" - "position" - "disabled" - "media_type"),
content: {
base64_encoded_data: payload.entry.content.base64_encoded_data[$],
"type": payload.entry.content."type",
name: payload.entry.content.name[$]
},
sku: payload.entry.sku[$]
}