Example usage for com.badlogic.gdx.utils JsonValue remove

List of usage examples for com.badlogic.gdx.utils JsonValue remove

Introduction

In this page you can find the example usage for com.badlogic.gdx.utils JsonValue remove.

Prototype

public JsonValue remove(String name) 

Source Link

Document

Removes the child with the specified name.

Usage

From source file:com.o2d.pkayjava.editor.data.migrations.migrators.VersionMigTo009.java

License:Apache License

@Override
public boolean doMigration() {
    // run through scene files and modify their content to new one

    // this is list of libraryItems for later
    HashMap<String, JsonValue> libraryItems = new HashMap<>();

    // fixing animations format (frameRange) and moving library items
    File scenesDir = new File(projectPath + File.separator + "scenes");
    for (File entry : scenesDir.listFiles()) {
        if (!entry.isDirectory()) {
            try {
                String content = FileUtils.readFileToString(new FileHandle(entry).file());
                JsonValue value = jsonReader.parse(content);
                fixAnimations(value.get("composite"));
                if (value.get("libraryItems") != null) {
                    JsonValue.JsonIterator libraryArr = value.get("libraryItems").iterator();
                    while (libraryArr.hasNext()) {
                        JsonValue libItem = libraryArr.next();
                        fixAnimations(libItem.get("composite"));
                        libraryItems.put(libItem.name, libItem);
                    }/*from  w  ww .  j  av  a2  s. c om*/
                    value.remove("libraryItems");
                }

                content = value.prettyPrint(JsonWriter.OutputType.json, 1);
                FileUtils.writeStringToFile(new File(entry.getAbsolutePath()), content, "utf-8");
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }

    fixLibraryItemsLocation(libraryItems);

    return true;
}

From source file:mt.Json.java

License:Apache License

/** @param type May be null if the type is unknown.
 * @param elementType May be null if the type is unknown.
 * @return May be null. */// w  w  w .j a  v  a 2 s. co  m
public <T> T readValue(Class<T> type, Class elementType, JsonValue jsonData) {
    if (jsonData == null)
        return null;

    if (jsonData.isObject()) {
        String className = typeName == null ? null : jsonData.getString(typeName, null);
        if (className != null) {
            jsonData.remove(typeName);
            try {
                type = (Class<T>) ClassReflection.forName(className);
            } catch (ReflectionException ex) {
                type = tagToClass.get(className);
                if (type == null)
                    throw new SerializationException(ex);
            }
        }

        Object object;
        if (type != null) {
            if (type == String.class || type == Integer.class || type == Boolean.class || type == Float.class
                    || type == Long.class || type == Double.class || type == Short.class || type == Byte.class
                    || type == Character.class || type.isEnum()) {
                return readValue("value", type, jsonData);
            }

            Serializer serializer = classToSerializer.get(type);
            if (serializer != null)
                return (T) serializer.read(this, jsonData, type);

            object = newInstance(type);

            if (object instanceof Serializable) {
                ((Serializable) object).read(this, jsonData);
                return (T) object;
            }

            if (object instanceof HashMap) {
                HashMap result = (HashMap) object;
                for (JsonValue child = jsonData.child(); child != null; child = child.next())
                    result.put(child.name(), readValue(elementType, null, child));
                return (T) result;
            }
        } else if (defaultSerializer != null) {
            return (T) defaultSerializer.read(this, jsonData, type);
        } else
            return (T) jsonData;

        if (object instanceof ObjectMap) {
            ObjectMap result = (ObjectMap) object;
            for (JsonValue child = jsonData.child(); child != null; child = child.next())
                result.put(child.name(), readValue(elementType, null, child));
            return (T) result;
        }
        readFields(object, jsonData);
        return (T) object;
    }

    if (type != null) {
        Serializer serializer = classToSerializer.get(type);
        if (serializer != null)
            return (T) serializer.read(this, jsonData, type);
    }

    if (jsonData.isArray()) {
        if ((type == null || type == Object.class) || ClassReflection.isAssignableFrom(Array.class, type)) {
            Array newArray = (type == null || type == Object.class) ? new Array() : (Array) newInstance(type);
            for (JsonValue child = jsonData.child(); child != null; child = child.next())
                newArray.add(readValue(elementType, null, child));
            return (T) newArray;
        }
        if (ClassReflection.isAssignableFrom(List.class, type)) {
            List newArray = (type == null || type.isInterface()) ? new ArrayList() : (List) newInstance(type);
            for (JsonValue child = jsonData.child(); child != null; child = child.next())
                newArray.add(readValue(elementType, null, child));
            return (T) newArray;
        }
        if (type.isArray()) {
            Class componentType = type.getComponentType();
            if (elementType == null)
                elementType = componentType;
            Object newArray = ArrayReflection.newInstance(componentType, jsonData.size);
            int i = 0;
            for (JsonValue child = jsonData.child(); child != null; child = child.next())
                ArrayReflection.set(newArray, i++, readValue(elementType, null, child));
            return (T) newArray;
        }
        throw new SerializationException(
                "Unable to convert value to required type: " + jsonData + " (" + type.getName() + ")");
    }

    if (jsonData.isNumber()) {
        try {
            if (type == null || type == float.class || type == Float.class)
                return (T) (Float) jsonData.asFloat();
            if (type == int.class || type == Integer.class)
                return (T) (Integer) jsonData.asInt();
            if (type == long.class || type == Long.class)
                return (T) (Long) jsonData.asLong();
            if (type == double.class || type == Double.class)
                return (T) (Double) (double) jsonData.asFloat();
            if (type == String.class)
                return (T) Float.toString(jsonData.asFloat());
            if (type == short.class || type == Short.class)
                return (T) (Short) (short) jsonData.asInt();
            if (type == byte.class || type == Byte.class)
                return (T) (Byte) (byte) jsonData.asInt();
        } catch (NumberFormatException ignored) {
        }
        jsonData = new JsonValue(jsonData.asString());
    }

    if (jsonData.isBoolean()) {
        try {
            if (type == null || type == boolean.class || type == Boolean.class)
                return (T) (Boolean) jsonData.asBoolean();
        } catch (NumberFormatException ignored) {
        }
        jsonData = new JsonValue(jsonData.asString());
    }

    if (jsonData.isString()) {
        String string = jsonData.asString();
        if (type == null || type == String.class)
            return (T) string;
        try {
            if (type == int.class || type == Integer.class)
                return (T) Integer.valueOf(string);
            if (type == float.class || type == Float.class)
                return (T) Float.valueOf(string);
            if (type == long.class || type == Long.class)
                return (T) Long.valueOf(string);
            if (type == double.class || type == Double.class)
                return (T) Double.valueOf(string);
            if (type == short.class || type == Short.class)
                return (T) Short.valueOf(string);
            if (type == byte.class || type == Byte.class)
                return (T) Byte.valueOf(string);
        } catch (NumberFormatException ignored) {
        }
        if (type == boolean.class || type == Boolean.class)
            return (T) Boolean.valueOf(string);
        if (type == char.class || type == Character.class)
            return (T) (Character) string.charAt(0);
        if (ClassReflection.isAssignableFrom(Enum.class, type)) {
            Object[] constants = type.getEnumConstants();
            for (int i = 0, n = constants.length; i < n; i++)
                if (string.equals(constants[i].toString()))
                    return (T) constants[i];
        }
        if (type == CharSequence.class)
            return (T) string;
        throw new SerializationException(
                "Unable to convert value to required type: " + jsonData + " (" + type.getName() + ")");
    }

    return null;
}