harmony-jolt 0.6.0

JSON to JSON transformation library using the JOLT spec
Documentation
{
    // complex read involving path value(s) retrieved from input
    // i.e. ContextDataValues.Age.Value is 65orOver, which is a part of context path, cdvs.Age.valuesLabels.65orOver

    "input": {
        "ContextDataValues": [
            {
                "Age": [
                    {
                        "Value": "65orOver",
                        "Id": "Age"
                    },
                    {
                        "Value": "55to64",
                        "Id": "Age"
                    }
                ],
                "Gender": {
                    "Value": "Male",
                    "Id": "Gender"
                }
            },
            {
                "Age": [
                    {
                        "Value": "55to64",
                        "Id": "Age"
                    },
                    {
                        "Value": "45to54",
                        "Id": "Age"
                    }
                ],
                "Gender": {
                    "Value": "Female",
                    "Id": "Gender"
                }
            }
        ]
    },
    "spec": {
        "ContextDataValues": {
            "*": {
                "Age": {
                    "*": {
                        // "Value": "65orOver" -> "^cdvs.Age.valuesLabels.65orOver"
                        //"ValueLabel": "^cdvs.&2.valuesLabels.@(1,Value)",
                        // above spec works but lets try something more complex
                        "ValueLabel": "^cdvs.&2.valuesLabels.@(3,&2[&1].Value)",
                        "DimensionLabel": "^cdvs.&2.dimensionLabel"
                    }
                },
                "Gender": {
                    // "Value": "Male" -> "^cdvs.Gender.valuesLabels.Male"
                    "ValueLabel": "^cdvs.&1.valuesLabels.@(1,Value)",
                    "DimensionLabel": "^cdvs.&1.dimensionLabel"
                }
            }
        }
    },
    "OVERWRITR": {
        "ContextDataValues": [
            {
                "Age": [
                    {
                        "Value": "65orOver",
                        "ValueLabel": "65 or over",
                        "DimensionLabel": "Age",
                        "Id": "Age"
                    },
                    {
                        "Value": "55to64",
                        "ValueLabel": "55 to 64",
                        "DimensionLabel": "Age",
                        "Id": "Age"
                    }
                ],
                "Gender": {
                    "Value": "Male",
                    "ValueLabel": "Male",
                    "DimensionLabel": "Gender",
                    "Id": "Gender"
                }
            },
            {
                "Age": [
                    {
                        "Value": "55to64",
                        "ValueLabel": "55 to 64",
                        "DimensionLabel": "Age",
                        "Id": "Age"
                    },
                    {
                        "Value": "45to54",
                        "ValueLabel": "45 to 54",
                        "DimensionLabel": "Age",
                        "Id": "Age"
                    }
                ],
                "Gender": {
                    "Value": "Female",
                    "ValueLabel": "Female",
                    "DimensionLabel": "Gender",
                    "Id": "Gender"
                }
            }]
    },
    "context": {
        "cdvs": {
            "Gender": {
                "dimensionLabel": "Gender",
                "valuesLabels": {
                    "Male": "Male",
                    "Female": "Female"
                }
            },
            "Age": {
                "dimensionLabel": "Age",
                "valuesLabels": {
                    "17orUnder": "17 or under",
                    "18to24": "18 to 24",
                    "25to34": "25 to 34",
                    "35to44": "35 to 44",
                    "45to54": "45 to 54",
                    "55to64": "55 to 64",
                    "65orOver": "65 or over"
                }
            }
        }
    }
}