Bläddra i källkod

Accept JSON as valid SJSON

Daniele Bartolini 10 år sedan
förälder
incheckning
535fba8c33
2 ändrade filer med 3 tillägg och 87 borttagningar
  1. 3 80
      src/core/json/sjson.cpp
  2. 0 7
      src/core/json/sjson.h

+ 3 - 80
src/core/json/sjson.cpp

@@ -174,7 +174,7 @@ namespace sjson
 		{
 			while (true)
 			{
-				if (isspace(*json) || *json == '=')
+				if (isspace(*json) || *json == '=' || *json == ':')
 					return json;
 
 				key += *json;
@@ -316,83 +316,6 @@ namespace sjson
 		CE_FATAL("Bad array");
 	}
 
-	static void parse_root_object(const char* json, Map<DynamicString, const char*>& object)
-	{
-		CE_ASSERT_NOT_NULL(json);
-
-		while (*json)
-		{
-			TempAllocator256 ta;
-			DynamicString key(ta);
-			json = parse_key(json, key);
-
-			json = skip_spaces(json);
-			json = next(json, '=');
-			json = skip_spaces(json);
-
-			map::set(object, key, json);
-
-			json = skip_value(json);
-			json = skip_spaces(json);
-		}
-	}
-
-	void parse_object(const char* json, Map<DynamicString, const char*>& object)
-	{
-		CE_ASSERT_NOT_NULL(json);
-
-		if (*json == '{')
-		{
-			json = next(json, '{');
-
-			json = skip_spaces(json);
-
-			if (*json == '}')
-			{
-				next(json, '}');
-				return;
-			}
-
-			while (*json)
-			{
-				TempAllocator256 ta;
-				DynamicString key(ta);
-				json = parse_key(json, key);
-
-				json = skip_spaces(json);
-				json = next(json, '=');
-				json = skip_spaces(json);
-
-				map::set(object, key, json);
-
-				json = skip_value(json);
-				json = skip_spaces(json);
-
-				if (*json == '}')
-				{
-					next(json, '}');
-					return;
-				}
-
-				json = skip_spaces(json);
-			}
-		}
-
-		CE_FATAL("Bad object");
-	}
-
-	void parse(const char* json, Map<DynamicString, const char*>& object)
-	{
-		CE_ASSERT_NOT_NULL(json);
-
-		json = skip_spaces(json);
-
-		if (*json == '{')
-			parse_object(json, object);
-		else
-			parse_root_object(json, object);
-	}
-
 	static void parse_root_object(const char* json, JsonObject& object)
 	{
 		CE_ASSERT_NOT_NULL(json);
@@ -408,7 +331,7 @@ namespace sjson
 			FixedString fs_key(key_begin, key.length());
 
 			json = skip_spaces(json);
-			json = next(json, '=');
+			json = next(json, (*json == '=') ? '=' : ':');
 			json = skip_spaces(json);
 
 			map::set(object, fs_key, json);
@@ -445,7 +368,7 @@ namespace sjson
 				FixedString fs_key(key_begin, key.length());
 
 				json = skip_spaces(json);
-				json = next(json, '=');
+				json = next(json, (*json == '=') ? '=' : ':');
 				json = skip_spaces(json);
 
 				map::set(object, fs_key, json);

+ 0 - 7
src/core/json/sjson.h

@@ -38,13 +38,6 @@ namespace sjson
 	/// the corresponding items into the original @a json string.
 	void parse_array(const char* json, JsonArray& array);
 
-	/// Parses the SJSON object @a json and puts it into @a object as map from
-	/// key to pointer to the corresponding value into the original string @a json.
-	void parse_object(const char* json, Map<DynamicString, const char*>& object);
-
-	/// Parses the SJSON-encoded @a json.
-	void parse(const char* json, Map<DynamicString, const char*>& object);
-
 	/// Parses the SJSON object @a json and puts it into @a object as map from
 	/// key to pointer to the corresponding value into the original string @a json.
 	void parse_object(const char* json, JsonObject& object);