-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathextract_value_from_stringified_json_object.tpl
132 lines (107 loc) · 2.67 KB
/
extract_value_from_stringified_json_object.tpl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
___INFO___
{
"type": "MACRO",
"id": "cvt_temp_public_id",
"version": 1,
"securityGroups": [],
"displayName": "Artemis - Extract Value from Stringified JSON Object",
"description": "Takes an input of Stringified JSON Object (e.g. a document from Firestore) and returns the value based on a given key.",
"containerContexts": [
"SERVER"
]
}
___TEMPLATE_PARAMETERS___
[
{
"type": "TEXT",
"name": "jsonString",
"displayName": "Stringified JSON Object",
"simpleValueType": true,
"valueValidators": [
{
"type": "NON_EMPTY"
}
]
},
{
"type": "TEXT",
"name": "key",
"displayName": "Key",
"simpleValueType": true,
"valueValidators": [
{
"type": "NON_EMPTY"
}
]
},
{
"type": "TEXT",
"name": "default",
"displayName": "Default Value",
"simpleValueType": true
}
]
___SANDBOXED_JS_FOR_SERVER___
// Copyright 2024 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
const logToConsole = require("logToConsole");
const JSON = require("JSON");
function getValueFromJSONString(jsonString, key) {
// Attempt to parse the JSON string
const parsedObject = JSON.parse(jsonString);
// Check if parsing was successful
if (parsedObject === undefined || parsedObject === null) {
return "Error: Invalid JSON string";
}
// Check if the key exists in the parsed object
if (parsedObject.hasOwnProperty(data.key)) {
return parsedObject[key];
} else {
return data.default;
}
}
//Entry point
return getValueFromJSONString(data.jsonString, data.key);
//Test to write: Mock invalid JSON should get error
//Check that you get value with key a:1
//Check that you get default if key doesn't exist
___SERVER_PERMISSIONS___
[
{
"instance": {
"key": {
"publicId": "logging",
"versionId": "1"
},
"param": [
{
"key": "environments",
"value": {
"type": 1,
"string": "debug"
}
}
]
},
"clientAnnotations": {
"isEditedByUser": true
},
"isRequired": true
}
]
___TESTS___
scenarios: []
___NOTES___
Created on 03/06/2024, 15:07:08