diff --git a/src/JsonUtil.cpp b/src/JsonUtil.cpp index 755036e770..33e97e6cd2 100644 --- a/src/JsonUtil.cpp +++ b/src/JsonUtil.cpp @@ -75,6 +75,19 @@ bool JsonUtil::WriteFile(const Json::Value &root, const RString &sFile, bool bMi return true; } +std::vector JsonUtil::DeserializeArrayStrings(const Json::Value &value) +{ + std::vector values; + for(auto &&inner_value : value) + { + if(inner_value.isConvertibleTo(Json::stringValue)) + { + values.push_back(inner_value.asString()); + } + } + return values; +} + /* * (c) 2001-2004 Chris Danford * All rights reserved. diff --git a/src/JsonUtil.h b/src/JsonUtil.h index 3cb1bdf673..582f91e342 100644 --- a/src/JsonUtil.h +++ b/src/JsonUtil.h @@ -14,6 +14,8 @@ namespace JsonUtil bool WriteFile(const Json::Value &root, const RString &sFile, bool bMinified); + std::vector DeserializeArrayStrings(const Json::Value &array); + template static void SerializeVectorObjects(const vector &v, void fn(const T &, Json::Value &), Json::Value &root) { @@ -195,57 +197,6 @@ namespace JsonUtil } } - template - static void DeserializeArrayValues(vector &v, const Json::Value &root) - { - v.clear(); - for( unsigned i=0; i - static void DeserializeArrayValuesIntoSet(S &s, const Json::Value &root) - { - s.clear(); - for( unsigned i=0; i - static void DeserializeArrayValuesIntoVector(vector &v, const Json::Value &root) - { - v.clear(); - for( unsigned i=0; i - static void DeserializeValueToValueMap(M &m, const Json::Value &root) - { - for( Json::Value::const_iterator iter = root.begin(); iter != root.end(); iter++ ) - (*iter).TryGet( m[ iter.memberName() ] ); - } - - template - static void DeserializeStringToValueMap(M &m, F fnToValue(E e), const Json::Value &root) - { - for( Json::Value::const_iterator iter = root.begin(); iter != root.end(); iter++ ) - (*iter).TryGet( m[ fnToValue(iter.memberName()) ] ); - } - template static void DeserializeStringToObjectMap(M &m, F fnToValue(E e), const Json::Value &root) { @@ -272,22 +223,6 @@ namespace JsonUtil } } - template - static void DeserializeObjectToValueMapAsArray(map &m, const RString &sKeyName, const RString &sValueName, const Json::Value &root) - { - for( unsigned i=0; i static void DeserializeVectorValues(vector &v, const Json::Value &root) { diff --git a/src/NotesLoaderJson.cpp b/src/NotesLoaderJson.cpp index 18d2486bb8..b7c38405f1 100644 --- a/src/NotesLoaderJson.cpp +++ b/src/NotesLoaderJson.cpp @@ -214,7 +214,7 @@ static void Deserialize( Song &out, const Json::Value &root ) JsonUtil::DeserializeVectorObjects( vBgc, Deserialize, root["ForegroundChanges"] ); } - JsonUtil::DeserializeArrayValuesIntoVector( out.m_vsKeysoundFile, root["KeySounds"] ); + out.m_vsKeysoundFile = JsonUtil::DeserializeArrayStrings(root["KeySounds"]); { vector vpSteps;