code: def from_json(cls, data, result=None):
          
          if data.get("type") != cls._type_value:
              raise exception.ElementDataWrongType(
                  type_expected=cls._type_value,
                  type_provided=data.get("type")
              )
  
          tags = data.get("tags", {})
  
          rel_id = data.get("id")
          (center_lat, center_lon) = cls.get_center_from_json(data=data)
  
          members = []
  
          supported_members = [RelationNode, RelationWay, RelationRelation]
          for member in data.get("members", []):
              type_value = member.get("type")
              for member_cls in supported_members:
                  if member_cls._type_value == type_value:
                      members.append(
                          member_cls.from_json(
                              member,
                              result=result
                          )
                      )
  
          attributes = {}
          ignore = ["id", "members", "tags", "type"]
          for n, v in data.items():
              if n in ignore:
                  continue
              attributes[n] = v
  
          return cls(
              rel_id=rel_id,
              attributes=attributes,
              center_lat=center_lat,
              center_lon=center_lon,
              members=members,
              tags=tags,
              result=result
          )
docs: Create new Relation element from JSON data
  
          :param data: Element data from JSON
          :type data: Dict
          :param result: The result this element belongs to
          :type result: overpy.Result
          :return: New instance of Relation
          :rtype: overpy.Relation
          :raises overpy.exception.ElementDataWrongType: If type value of the passed JSON data does not match.