serializeReferencesToJSON

The serializeReferencesToJSON function is used to serialize the references from an object.

Syntax

c4i:serializeReferencesToJSON(references [,structure] [, lov] [, units] [, values] [, keyMetaAttribute] [, displayReferenceTarget] [, keysOrder])

Parameters

references

XPath to the root objet (.) will serialize all the references, regardless of their type.

Otherwise, you can target the desired references by providing a custom XPath.

You can also filter the references by using the following function : getReferencesByAttributeGroup

structure

  • Indicates how to represent references
  • The authorized values are "BY_SUPER_TYPE" (default), "BY_TYPE" or "FLAT"
    • "BY_SUPER_TYPE" adds two levels of indexation : Super Type (ProductCrossReference, ClassificationCrossReference, ...) and Reference Type ID
    • "BY_TYPE" adds one level of indexation : Reference Type ID
    • "FLAT" puts all references in an array, regardless of the type and super type

lov (optional) :

  • Indicates how to represent LOV values
  • The authorized values are "DISPLAY_LOV_VALUE_LABEL" (default), "DISPLAY_LOV_VALUE_ID" or "DISPLAY_BOTH"

unit (optional)

  • Indicates how to represent units
  • The authorized values are "NO_UNITS" (default), "DISPLAY_UNIT_ID", "DISPLAY_UNIT_LABEL"

value (optional) :

  • Indicates if values and units should be concatenated or separated
  • The authorized values are "CONCAT_VALUE_UNIT" (default) or "ISOLATE_VALUE"

keyMetaAttribute (optional)

  • By default, attributes are indexed using their attribute ID
  • If this parameter is supplied, attributes will be indexed using a meta-attribute value, if it is present

displayReferenceTarget (optional)

  • Indicates whether to display reference target ID or key value
  • The authorized values are "BY_ID" (default) or "BY_KEY"

keysOrder (optional)

  • Indicates the order in with the keys should be used when an object has multiple key values
  • Separate keys using a comma (,). Example : "Key1,Key2"

Return value

A JSON document containing the references and associated meta-data.

Examples

Given the following STEP XML:

<STEP-ProductInformation>
    <AttributeList>
        <Attribute ID="ATT2">
            <Validation BaseType="number">
                <UnitLink UnitID="unece.unit.KTM"/>
            </Validation>
        </Attribute>
    </AttributeList>
    <Products>
      <Product ID="PRD1">
          <ProductCrossReference Type="Accessory" ProductID="PRD2">
              <MetaData>
                  <MultiValue AttributeID="ATT1">
                      <Value ID="VAL_1">Value 1</Value> 
                      <Value ID="VAL_2">Value 2</Value> 
                  </MultiValue>
                  <MultiValue AttributeID="ATT2">
                      <Value UnitID="unece.unit.KTM">16</Value>
                      <Value UnitID="unece.unit.KTM">12</Value>
                  </MultiValue>
              </MetaData>
          </ProductCrossReference>
          <AssetCrossReference Type="PrimaryImage" AssetID="IMG1"/>
      </Product>
    </Products>
</STEP-ProductInformation>

The following YAML configuration will produce the following output :

c4i:serializeReferencesToJSON(.)
{
  "ProductCrossReference": {
    "Accessory": [
      { 
        "target":  "PRD2",
        "metaData": { "ATT1" :  ["Value 1", "Value 2"], "ATT2" : [16.0, 12.0]}
      }              
    ]   
  },
  "AssetCrossReference": {
    "PrimaryImage": [
      { "target":  "IMG1"}   
    ]  
  }
}

The following YAML configuration will produce the following output :

c4i:serializeReferencesToJSON(".", "BY_TYPE")
{
    "Accessory": [
      { 
        "target":  "PRD2",
        "metaData": { "ATT1" :  ["Value 1", "Value 2"], "ATT2" : [16.0, 12.0]}
      }              
    ] ,
    "PrimaryImage": [
      { "target":  "IMG1"}   
    ]
}

The following YAML configuration will produce the following output :

c4i:serializeReferencesToJSON(ProductCrossReference[@Type="Accessory"], "FLAT")
[
  {
    "target":  "PRD2",
    "metaData": { "ATT1" :  ["Value 1", "Value 2"], "ATT2" : [16.0, 12.0]}
  }
]

Please refer to the documentation of multiValuesToJSON for more info on using the parameter values of this function.

Last Updated: