change json seralization of map<string,T> to be object rather than array of pairs
This commit is contained in:
parent
0dca15c395
commit
a421e28048
5 changed files with 48 additions and 1 deletions
|
|
@ -93,10 +93,17 @@ namespace fc
|
||||||
template<typename K, typename T>
|
template<typename K, typename T>
|
||||||
void from_variant( const variant& var, fc::flat_map<K,T>& vo );
|
void from_variant( const variant& var, fc::flat_map<K,T>& vo );
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void to_variant( const std::map<string,T>& var, variant& vo );
|
||||||
|
template<typename T>
|
||||||
|
void from_variant( const variant& var, std::map<string,T>& vo );
|
||||||
|
|
||||||
template<typename K, typename T>
|
template<typename K, typename T>
|
||||||
void to_variant( const std::map<K,T>& var, variant& vo );
|
void to_variant( const std::map<K,T>& var, variant& vo );
|
||||||
template<typename K, typename T>
|
template<typename K, typename T>
|
||||||
void from_variant( const variant& var, std::map<K,T>& vo );
|
void from_variant( const variant& var, std::map<K,T>& vo );
|
||||||
|
|
||||||
|
|
||||||
template<typename K, typename T>
|
template<typename K, typename T>
|
||||||
void to_variant( const std::multimap<K,T>& var, variant& vo );
|
void to_variant( const std::multimap<K,T>& var, variant& vo );
|
||||||
template<typename K, typename T>
|
template<typename K, typename T>
|
||||||
|
|
@ -401,6 +408,8 @@ namespace fc
|
||||||
vo.insert( itr->as< std::pair<K,T> >() );
|
vo.insert( itr->as< std::pair<K,T> >() );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template<typename K, typename T>
|
template<typename K, typename T>
|
||||||
void to_variant( const std::map<K, T>& var, variant& vo )
|
void to_variant( const std::map<K, T>& var, variant& vo )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
namespace fc
|
namespace fc
|
||||||
{
|
{
|
||||||
|
using std::map;
|
||||||
class mutable_variant_object;
|
class mutable_variant_object;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -66,6 +67,15 @@ namespace fc
|
||||||
|
|
||||||
/** initializes the first key/value pair in the object */
|
/** initializes the first key/value pair in the object */
|
||||||
variant_object( string key, variant val );
|
variant_object( string key, variant val );
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
variant_object( const map<string,T>& values )
|
||||||
|
:_key_value( new std::vector<entry>() ) {
|
||||||
|
_key_value->reserve( values.size() );
|
||||||
|
for( const auto& item : values ) {
|
||||||
|
_key_value->emplace_back( entry( item.first, fc::variant(item.second) ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
variant_object( string key, T&& val )
|
variant_object( string key, T&& val )
|
||||||
|
|
@ -196,6 +206,15 @@ namespace fc
|
||||||
|
|
||||||
mutable_variant_object();
|
mutable_variant_object();
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
mutable_variant_object( const map<string,T>& values )
|
||||||
|
:_key_value( new std::vector<entry>() ) {
|
||||||
|
_key_value->reserve( values.size() );
|
||||||
|
for( const auto& item : values ) {
|
||||||
|
_key_value->emplace_back( variant_object::entry( item.first, fc::variant(item.second) ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** initializes the first key/value pair in the object */
|
/** initializes the first key/value pair in the object */
|
||||||
mutable_variant_object( string key, variant val );
|
mutable_variant_object( string key, variant val );
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|
@ -212,6 +231,8 @@ namespace fc
|
||||||
mutable_variant_object& operator=( mutable_variant_object&& );
|
mutable_variant_object& operator=( mutable_variant_object&& );
|
||||||
mutable_variant_object& operator=( const mutable_variant_object& );
|
mutable_variant_object& operator=( const mutable_variant_object& );
|
||||||
mutable_variant_object& operator=( const variant_object& );
|
mutable_variant_object& operator=( const variant_object& );
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr< std::vector< entry > > _key_value;
|
std::unique_ptr< std::vector< entry > > _key_value;
|
||||||
friend class variant_object;
|
friend class variant_object;
|
||||||
|
|
@ -221,4 +242,19 @@ namespace fc
|
||||||
/** @ingroup Serializable */
|
/** @ingroup Serializable */
|
||||||
void from_variant( const variant& var, mutable_variant_object& vo );
|
void from_variant( const variant& var, mutable_variant_object& vo );
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void to_variant( const std::map<string, T>& var, variant& vo )
|
||||||
|
{
|
||||||
|
vo = variant_object( var );
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void from_variant( const variant& var, std::map<string, T>& vo )
|
||||||
|
{
|
||||||
|
const auto& obj = var.get_object();
|
||||||
|
vo.clear();
|
||||||
|
for( auto itr = obj.begin(); itr != obj.end(); ++itr )
|
||||||
|
vo[itr->key()] = itr->value().as<T>();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace fc
|
} // namespace fc
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@ std::string websocket_api_connection::on_message(
|
||||||
const std::string& message,
|
const std::string& message,
|
||||||
bool send_message /* = true */ )
|
bool send_message /* = true */ )
|
||||||
{
|
{
|
||||||
|
wdump((message));
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
auto var = fc::json::from_string(message);
|
auto var = fc::json::from_string(message);
|
||||||
|
|
|
||||||
|
|
@ -163,6 +163,7 @@ namespace fc
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void to_variant( const variant_object& var, variant& vo )
|
void to_variant( const variant_object& var, variant& vo )
|
||||||
{
|
{
|
||||||
vo = variant(var);
|
vo = variant(var);
|
||||||
|
|
|
||||||
2
vendor/websocketpp
vendored
2
vendor/websocketpp
vendored
|
|
@ -1 +1 @@
|
||||||
Subproject commit 378437aecdcb1dfe62096ffd5d944bf1f640ccc3
|
Subproject commit c5510d6de04917812b910a8dd44735c1f17061d9
|
||||||
Loading…
Reference in a new issue