Add support for convert from json to object/list

Signed-off-by: Hasan Turken <turkenh@gmail.com>
This commit is contained in:
Hasan Turken 2023-08-29 10:53:37 +03:00
parent 151ab38f09
commit 3b58e158b3
No known key found for this signature in database
GPG Key ID: EE8BB9CB12F58415
1 changed files with 54 additions and 1 deletions

View File

@ -1098,6 +1098,8 @@ Supported `toType` values:
| `int` | A 32-bit integer value. |
| `int64` | A 64-bit integer value. |
| `string` | A string value. |
| `object` | An object. |
| `array` | An array. |
{{< /table >}}
#### Converting strings to booleans
@ -1146,6 +1148,58 @@ suffix support.
format: quantity
```
#### Converting strings to objects
Crossplane converts JSON strings to objects.
Add {{<hover label="object" line="4">}}format: json{{</hover>}} to the
{{<hover label="object" line="1">}}convert{{</hover>}} object which is
the only supported string format for this conversion.
```yaml {label="object",copy-lines="all"}
- type: convert
convert:
toType: object
format: json
```
{{< hint "tip" >}}
This conversion is useful for patching keys in an object.
{{< /hint >}}
The following example adds a tag to a resource with a
{{<hover label="patch-key" line="8">}}customized key{{</hover>}}:
```yaml {label="patch-key",copy-lines="all"}
- type: FromCompositeFieldPath
fromFieldPath: spec.clusterName
toFieldPath: spec.forProvider.tags
transforms:
- type: string
string:
type: Format
fmt: '{"kubernetes.io/cluster/%s": "true"}'
- type: convert
convert:
toType: object
format: json
```
#### Converting strings to arrays
Crossplane converts JSON strings to arrays.
Add {{<hover label="array" line="4">}}format: json{{</hover>}} to the
{{<hover label="array" line="1">}}convert{{</hover>}} object which is
the only supported string format for this conversion.
```yaml {label="array",copy-lines="all"}
- type: convert
convert:
toType: array
format: json
```
### Map transforms
The {{<hover label="map" line="6">}}map{{</hover>}} transform type
_maps_ an input value to an output value.
@ -1505,7 +1559,6 @@ converts the input based on one of the following conversion types:
* `ToBase64` - Create a new base64 string from the input.
* `FromBase64` - Create a new text string from a base64 input.
* `ToJson` - Convert the input string to valid JSON.
* `FromJson` - Convert the input JSON string to an object.
* `ToSha1` - Create a SHA-1 hash of the input string.
* `ToSha256` - Create a SHA-256 hash of the input string.
* `ToSha512` - Create a SHA-512 hash of the input string.