template<typename InputIterator> void set( InputIterator begin, InputIterator end ) {
			string strJson( begin, end) ;
			json_error_t error ;
			json_t* v = json_loads(strJson.c_str(), 0, &error) ;
			if( !v ) {
				cerr << "JsonMsg::set - " << error.text << " at line " << error.line << ", column " << error.column << endl ;
				throw std::runtime_error(error.text) ;
			}
			m_value = v ;
		}
// callback vastaukselle
void CommInterfaceJson::dataReceived( QNetworkReply *reply ) {

    // etsitään oikea paketti
    ResponseData rData;
    for (int i = 0; i < mReplyVector.size(); ++i)
    {
        if (mReplyVector.at( i ).response == reply)
        {
            rData = mReplyVector.at(i);
            mReplyVector.erase(mReplyVector.begin() + i);
            break;
        }
    }

    // tarkistetaan paketin eheys
    if (reply->error() == QNetworkReply::NoError) {

        // vastauksen parsiminen
        QByteArray bytes = reply->readAll();
        QJsonParseError err;
        QJsonDocument doc = QJsonDocument::fromJson( bytes, &err );

        switch (rData.function)
        {
        case GW_GET_ACCOUNT:
            QString strJson(doc.toJson(QJsonDocument::Compact));
            mMainwindow->debug(strJson);
            break;
        }

    }
    // jotakin tapahtui
    else
    {
        QString e = reply->errorString();
        mMainwindow->debug(e);
    }

    // tuhotaan vastaus
    reply->deleteLater();
}