QJsonObject SymbolBehavior::toJson() const { QJsonObject json(ItemBehavior::toJson()); int symbolType = data(LP::SymbolType).toInt(); if (symbolType != LP::NoSymbolType) { json.insert(DataKey::SymbolType, symbolType); } json.insert(DataKey::Instrument, data(LP::SymbolInstrument).toInt()); json.insert(DataKey::SymbolName, data(LP::SymbolName).toString()); if (hasOption(HasLength)) { Length::Value length = data(LP::SymbolLength).value<Length::Value>(); json.insert(DataKey::Lenght, static_cast<int>(length)); } if (hasOption(HasPitch)) { Pitch pitch = data(LP::SymbolPitch).value<Pitch>(); json.insert(DataKey::Pitch, pitch.toJson()); } SpanType spanType = data(LP::SymbolSpanType).value<SpanType>(); if (spanType != SpanType::None) { json.insert(DataKey::SymbolSpanType, static_cast<int>(spanType)); } return json; }