Hello All,
I'm having some difficulty for creating Json parameter based on my cdt. Here is the scenario,
Suppose my CDT is as below
[ID:12,Identifier:"Abc",Label:"NumberOfPages",Value:"30"],
[ID:13,Identifier:"Pqr",Label:"LastModified",Value:"2018-12-11"]
Now I need to create a Json parameter in such a way that it consists of label and value as a actual parameter and its value i.e. Json output should be something like
{"NumberOfPages":"30",LastModified":"2018-12-11"}
Any suggestion here would be appreciated. Thanks in advance
Discussion posts and replies are publicly visible
Can you post an example of the code you're using? The result you describe getting from a!toJson is not consistent with how I have seen it works when passed an actual CDT.
For example, this expression:
load( local!myCdt: { ID: 12, Identifier: "Abc", NumberOfPages: 30, LastModified: today() }, a!toJson(local!myCdt) )
produces the following output, which seems consistent with what you seem to be asking for:
{"ID":12,"Identifier":"Abc","NumberOfPages":30,"LastModified":"2018-06-29Z"}
For this you would need some sort of custom code, as this isn't really a use case a!toJson is intended to work with.
The only suggestion I can think of is, use your original CDT and formulate a custom dictionary and then convert that to JSON, and afterwards manually swap out values within the resulting JSON string. Note that this is a little complicated and might not scale very well.
load( local!myCdt: { ID: 12, Identifier: "Abc", Label: "NumberOfPages", Value: 30, LastModified: today() }, local!customDictionary: { replaceWithLabel: local!myCdt.Value }, local!initialJson: a!toJson(local!customDictionary), substitute( local!initialJson, "replaceWithLabel", local!myCdt.Label ) )
Result:
{"NumberOfPages":30}
Fair point - presuming the original input is a CDT array with different Labels, we would want to handle the conversion in a loop.
with( local!myCdt: { { ID: 12, Identifier: "Abc", Label: "NumberOfPages", Value: 30 }, { ID: 47, Identifier: "XYZ", Label: "LastModified", Value: today() } }, local!customDictionary: a!toJson( a!forEach( local!myCdt, with( local!initialJson: a!toJson( { replaceWithLabel: fv!item.Value } ), local!convertedJson: substitute( local!initialJson, "replaceWithLabel", fv!item.Label ), a!fromJson(local!convertedJson) ) ) ), local!customDictionary )
Output:
[{"NumberOfPages":30},{"LastModified":"2018-06-29Z"}]