// Convert rapidjson value to JSON value. static void ToJSONValue(JSONValue& jsonValue, const rapidjson::Value& rapidjsonValue) { switch (rapidjsonValue.GetType()) { case kNullType: // Reset to null type jsonValue.SetType(JSON_NULL); break; case kFalseType: jsonValue = false; break; case kTrueType: jsonValue = true; break; case kNumberType: if (rapidjsonValue.IsInt()) jsonValue = rapidjsonValue.GetInt(); else if (rapidjsonValue.IsUint()) jsonValue = rapidjsonValue.GetUint(); else jsonValue = rapidjsonValue.GetDouble(); break; case kStringType: jsonValue = rapidjsonValue.GetString(); break; case kArrayType: { jsonValue.Resize(rapidjsonValue.Size()); for (unsigned i = 0; i < rapidjsonValue.Size(); ++i) { ToJSONValue(jsonValue[i], rapidjsonValue[i]); } } break; case kObjectType: { jsonValue.SetType(JSON_OBJECT); for (rapidjson::Value::ConstMemberIterator i = rapidjsonValue.MemberBegin(); i != rapidjsonValue.MemberEnd(); ++i) { JSONValue& value = jsonValue[String(i->name.GetString())]; ToJSONValue(value, i->value); } } break; default: break; } }
bool NETAssemblyImporter::SaveSettingsInternal(JSONValue& jsonRoot) { if (!AssetImporter::SaveSettingsInternal(jsonRoot)) return false; JSONValue import; import.SetType(JSON_OBJECT); import.Set("AssemblyJSON", assemblyJSON_); jsonRoot.Set("NETAssemblyImporter", import); return true; }
bool NETToolSystem::InspectAssembly(const String& pathToAssembly, JSONValue &json) { json.SetType(JSON_NULL); if (!inspectAssemblyFunction_) return false; String jsonString = inspectAssemblyFunction_(pathToAssembly.CString()); if (!jsonString.Length()) return false; return JSONFile::ParseJSON(jsonString, json); }