Skip to content

Commit

Permalink
Merge pull request #541 from turkenh/convert-json
Browse files Browse the repository at this point in the history
Add support for convert from json to object/list
  • Loading branch information
turkenh authored Aug 29, 2023
2 parents 151ab38 + 3b58e15 commit adb5515
Showing 1 changed file with 54 additions and 1 deletion.
55 changes: 54 additions & 1 deletion content/master/concepts/patch-and-transform.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit adb5515

Please sign in to comment.