const SipInfo SipInfo::fromJson( QString json ) { SipInfo info; QJson::Parser parser; bool ok; QVariant v = parser.parse( json.toLatin1(), &ok ); if ( !ok || v.type() != QVariant::Map ) { qDebug() << Q_FUNC_INFO << "Invalid JSON: " << json; return info; } QVariantMap m = v.toMap(); info.setVisible( m["visible"].toBool() ); if ( m["visible"].toBool() ) { info.setHost( m["host"].toString() ); info.setPort( m["port"].toInt() ); info.setNodeId( m["uniqname"].toString() ); info.setKey( m["key"].toString() ); } return info; }