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

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

Introduction

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

Prototype

public boolean isObject() 

Source Link

Usage

From source file:com.ahsgaming.valleyofbones.Utils.java

License:Apache License

public static Array<Object> jsonAsArray(JsonValue json) {
    Array<Object> returnVal = new Array<Object>();
    for (JsonValue v : json) {
        returnVal.add((v.isValue() ? v.asString() : (v.isObject() ? v : jsonAsArray(v))));
    }//from   w w w  .  ja v  a  2s .  c om
    return returnVal;
}

From source file:com.trgk.touchwave.menuscene.RankingLoadScene.java

License:Open Source License

@Override
public void act(float dt) {
    super.act(dt);

    final TGWindow rankingWindow = parent.rankingWindow;
    final FBService fb = FBService.getInstance();
    final GameLogger logger = GameLogger.getInstance();

    // Get user permission
    if (currentState == -1) {
        currentState = 0;//from w  ww  . ja v a 2s . c om
        if (!logger.notifiedRankingRealName) {
            getSceneManager().setCurrentScene(new FBAlertScene(this));
            logger.notifiedRankingRealName = true;
            logger.saveGameLog();
            return;
        }
    }

    // Get user ID
    if (currentState == 0) {
        if (logger.maxScore == -1)
            currentState = 6;
        else {
            if (fb.isLogonRead())
                currentState = 2;
            else {
                fb.loginRead();
                currentState = 1;
            }
        }
    }

    // Wait for fb read login
    if (currentState == 1) {
        if (!fb.isBusy()) {
            if (fb.getLastActionResult() != FBService.Result.SUCCESS) {
                postErrorMsg("?? ??  .", 0);
                currentState = 6; // Skip user status
            } else
                currentState = 2;
        }
    }

    // Post user data
    if (currentState == 2) {
        String reqURL = serverDomain + "ranking/";
        HttpRequestBuilder requestBuilder = new HttpRequestBuilder();

        JsonValue requestBodyJson = new JsonValue(JsonValue.ValueType.object);

        JsonValue fbIDValue = new JsonValue(fb.userID);
        JsonValue fbNicknameValue = new JsonValue(fb.username);
        JsonValue maxScoreValue = new JsonValue(GameLogger.getInstance().maxScore);
        JsonValue accessToken = new JsonValue(fb.getAccessToken());

        fbIDValue.setName("fbID");
        fbNicknameValue.setName("fbNickname");
        maxScoreValue.setName("maxScore");
        accessToken.setName("accessToken");

        requestBodyJson.child = fbIDValue;
        fbIDValue.setNext(fbNicknameValue);
        fbNicknameValue.setNext(maxScoreValue);
        maxScoreValue.setNext(accessToken);

        String requestBody = requestBodyJson.toJson(JsonWriter.OutputType.json);

        final Net.HttpRequest httpRequest = requestBuilder.newRequest().method(Net.HttpMethods.PUT).url(reqURL)
                .header(HttpRequestHeader.ContentType, "application/json").content(requestBody).build();
        currentState = 3; // Wait for http request to complete

        Gdx.net.sendHttpRequest(httpRequest, new Net.HttpResponseListener() {
            @Override
            public void handleHttpResponse(Net.HttpResponse httpResponse) {
                currentState = 4;
            }

            @Override
            public void failed(Throwable t) {
                postErrorMsg(" ?? .", 0);
                currentState = 6;
            }

            @Override
            public void cancelled() {
                postErrorMsg(" ?? .", 0);
                currentState = 6;
            }
        });
    }

    // Get user ranking
    if (currentState == 4) {
        String reqURL = String.format(Locale.ENGLISH, serverDomain + "ranking/%d", fb.userID);
        HttpRequestBuilder requestBuilder = new HttpRequestBuilder();
        final Net.HttpRequest httpRequest = requestBuilder.newRequest().method(Net.HttpMethods.GET).url(reqURL)
                .build();
        currentState = 5;
        Gdx.net.sendHttpRequest(httpRequest, new Net.HttpResponseListener() {
            @Override
            public void handleHttpResponse(Net.HttpResponse httpResponse) {
                JsonReader reader = new JsonReader();
                JsonValue result = reader.parse(httpResponse.getResultAsString());

                if (result.isObject() && result.get("userRank") != null) {
                    int userRank = result.getInt("userRank");
                    int maxScore = result.getInt("maxScore");
                    rankingWindow.addActor(
                            new RankingScene.RankingEntry(userRank, fb.username, maxScore, Color.BLUE, 0));
                    currentState = 6;
                } else {
                    postErrorMsg(" ?? .", 0);
                    currentState = 6;
                }
            }

            @Override
            public void failed(Throwable t) {
                postErrorMsg(" ?? .", 0);
                currentState = 6;
            }

            @Override
            public void cancelled() {
                postErrorMsg(" ?? .", 0);
                currentState = 6;
            }
        });
    }

    // Get total ranking
    if (currentState == 6) {
        String reqURL = serverDomain + "ranking/";
        HttpRequestBuilder requestBuilder = new HttpRequestBuilder();
        final Net.HttpRequest httpRequest = requestBuilder.newRequest().method(Net.HttpMethods.GET).url(reqURL)
                .build();
        currentState = 7;

        Gdx.net.sendHttpRequest(httpRequest, new Net.HttpResponseListener() {
            @Override
            public void handleHttpResponse(Net.HttpResponse httpResponse) {
                JsonReader reader = new JsonReader();
                JsonValue result = reader.parse(httpResponse.getResultAsString());

                if (result.isObject() && result.get("rankings") != null) {
                    JsonValue rankingArray = result.get("rankings");
                    JsonValue rankingEntry = rankingArray.child;
                    int entryID = 1;
                    while (rankingEntry != null) {
                        rankingWindow.addActor(
                                new RankingScene.RankingEntry(entryID, rankingEntry.getString("fbNickname"),
                                        rankingEntry.getInt("maxScore"), Color.BLACK, entryID));
                        rankingEntry = rankingEntry.next;
                        entryID++;

                        if (entryID == 20)
                            break;
                    }
                    currentState = 8;
                } else {
                    postErrorMsg("? ? .", 1);
                    currentState = 8;
                }
            }

            @Override
            public void failed(Throwable t) {
                postErrorMsg("? ? .", 1);
                currentState = 8;
            }

            @Override
            public void cancelled() {
                postErrorMsg("? ? .", 1);
                currentState = 8;
            }
        });
    }

    if (currentState == 8) {
        fb.logout();
        gotoParent();
        currentState = 9;
    }

}

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. *//*from w ww. j  a v  a  2 s . c o 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;
}

From source file:org.itas.common.json.JsonReader.java

License:Apache License

public JsonValue parse(char[] data, int offset, int length) {
    int cs, p = offset, pe = length, eof = pe, top = 0;
    int[] stack = new int[4];

    int s = 0;//from ww  w .  j a  v a2  s.  c  o  m
    Array<String> names = new Array(8);
    boolean needsUnescape = false;
    boolean discardBuffer = false; // When unquotedString and true/false/null both match, this discards unquotedString.
    RuntimeException parseRuntimeEx = null;

    boolean debug = false;
    if (debug)
        System.out.println();

    try {

        // line 3 "JsonReader.java"
        {
            cs = json_start;
            top = 0;
        }

        // line 8 "JsonReader.java"
        {
            int _klen;
            int _trans = 0;
            int _acts;
            int _nacts;
            int _keys;
            int _goto_targ = 0;

            _goto: while (true) {
                switch (_goto_targ) {
                case 0:
                    if (p == pe) {
                        _goto_targ = 4;
                        continue _goto;
                    }
                    if (cs == 0) {
                        _goto_targ = 5;
                        continue _goto;
                    }
                case 1:
                    _match: do {
                        _keys = _json_key_offsets[cs];
                        _trans = _json_index_offsets[cs];
                        _klen = _json_single_lengths[cs];
                        if (_klen > 0) {
                            int _lower = _keys;
                            int _mid;
                            int _upper = _keys + _klen - 1;
                            while (true) {
                                if (_upper < _lower)
                                    break;

                                _mid = _lower + ((_upper - _lower) >> 1);
                                if (data[p] < _json_trans_keys[_mid])
                                    _upper = _mid - 1;
                                else if (data[p] > _json_trans_keys[_mid])
                                    _lower = _mid + 1;
                                else {
                                    _trans += (_mid - _keys);
                                    break _match;
                                }
                            }
                            _keys += _klen;
                            _trans += _klen;
                        }

                        _klen = _json_range_lengths[cs];
                        if (_klen > 0) {
                            int _lower = _keys;
                            int _mid;
                            int _upper = _keys + (_klen << 1) - 2;
                            while (true) {
                                if (_upper < _lower)
                                    break;

                                _mid = _lower + (((_upper - _lower) >> 1) & ~1);
                                if (data[p] < _json_trans_keys[_mid])
                                    _upper = _mid - 2;
                                else if (data[p] > _json_trans_keys[_mid + 1])
                                    _lower = _mid + 2;
                                else {
                                    _trans += ((_mid - _keys) >> 1);
                                    break _match;
                                }
                            }
                            _trans += _klen;
                        }
                    } while (false);

                    cs = _json_trans_targs[_trans];

                    if (_json_trans_actions[_trans] != 0) {
                        _acts = _json_trans_actions[_trans];
                        _nacts = (int) _json_actions[_acts++];
                        while (_nacts-- > 0) {
                            switch (_json_actions[_acts++]) {
                            case 0:
                            // line 106 "JsonReader.rl"
                            {
                                s = p;
                                needsUnescape = false;
                                discardBuffer = false;
                            }
                                break;
                            case 1:
                            // line 111 "JsonReader.rl"
                            {
                                needsUnescape = true;
                            }
                                break;
                            case 2:
                            // line 114 "JsonReader.rl"
                            {
                                String name = new String(data, s, p - s);
                                s = p;
                                if (needsUnescape)
                                    name = unescape(name);
                                if (debug)
                                    System.out.println("name: " + name);
                                names.add(name);
                            }
                                break;
                            case 3:
                            // line 121 "JsonReader.rl"
                            {
                                if (!discardBuffer) {
                                    String value = new String(data, s, p - s);
                                    s = p;
                                    if (needsUnescape)
                                        value = unescape(value);
                                    String name = names.size > 0 ? names.pop() : null;
                                    if (debug)
                                        System.out.println("string: " + name + "=" + value);
                                    string(name, value);
                                }
                            }
                                break;
                            case 4:
                            // line 131 "JsonReader.rl"
                            {
                                String value = new String(data, s, p - s);
                                s = p;
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("double: " + name + "=" + Double.parseDouble(value));
                                number(name, Double.parseDouble(value));
                            }
                                break;
                            case 5:
                            // line 138 "JsonReader.rl"
                            {
                                String value = new String(data, s, p - s);
                                s = p;
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("long: " + name + "=" + Long.parseLong(value));
                                number(name, Long.parseLong(value));
                            }
                                break;
                            case 6:
                            // line 145 "JsonReader.rl"
                            {
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("boolean: " + name + "=true");
                                bool(name, true);
                                discardBuffer = true;
                            }
                                break;
                            case 7:
                            // line 151 "JsonReader.rl"
                            {
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("boolean: " + name + "=false");
                                bool(name, false);
                                discardBuffer = true;
                            }
                                break;
                            case 8:
                            // line 157 "JsonReader.rl"
                            {
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("null: " + name);
                                string(name, null);
                                discardBuffer = true;
                            }
                                break;
                            case 9:
                            // line 163 "JsonReader.rl"
                            {
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("startObject: " + name);
                                startObject(name);
                                {
                                    if (top == stack.length) {
                                        int[] newStack = new int[stack.length * 2];
                                        System.arraycopy(stack, 0, newStack, 0, stack.length);
                                        stack = newStack;
                                    }
                                    {
                                        stack[top++] = cs;
                                        cs = 8;
                                        _goto_targ = 2;
                                        if (true)
                                            continue _goto;
                                    }
                                }
                            }
                                break;
                            case 10:
                            // line 169 "JsonReader.rl"
                            {
                                if (debug)
                                    System.out.println("endObject");
                                pop();
                                {
                                    cs = stack[--top];
                                    _goto_targ = 2;
                                    if (true)
                                        continue _goto;
                                }
                            }
                                break;
                            case 11:
                            // line 174 "JsonReader.rl"
                            {
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("startArray: " + name);
                                startArray(name);
                                {
                                    if (top == stack.length) {
                                        int[] newStack = new int[stack.length * 2];
                                        System.arraycopy(stack, 0, newStack, 0, stack.length);
                                        stack = newStack;
                                    }
                                    {
                                        stack[top++] = cs;
                                        cs = 46;
                                        _goto_targ = 2;
                                        if (true)
                                            continue _goto;
                                    }
                                }
                            }
                                break;
                            case 12:
                            // line 180 "JsonReader.rl"
                            {
                                if (debug)
                                    System.out.println("endArray");
                                pop();
                                {
                                    cs = stack[--top];
                                    _goto_targ = 2;
                                    if (true)
                                        continue _goto;
                                }
                            }
                                break;
                            // line 217 "JsonReader.java"
                            }
                        }
                    }

                case 2:
                    if (cs == 0) {
                        _goto_targ = 5;
                        continue _goto;
                    }
                    if (++p != pe) {
                        _goto_targ = 1;
                        continue _goto;
                    }
                case 4:
                    if (p == eof) {
                        int __acts = _json_eof_actions[cs];
                        int __nacts = (int) _json_actions[__acts++];
                        while (__nacts-- > 0) {
                            switch (_json_actions[__acts++]) {
                            case 3:
                            // line 121 "JsonReader.rl"
                            {
                                if (!discardBuffer) {
                                    String value = new String(data, s, p - s);
                                    s = p;
                                    if (needsUnescape)
                                        value = unescape(value);
                                    String name = names.size > 0 ? names.pop() : null;
                                    if (debug)
                                        System.out.println("string: " + name + "=" + value);
                                    string(name, value);
                                }
                            }
                                break;
                            case 4:
                            // line 131 "JsonReader.rl"
                            {
                                String value = new String(data, s, p - s);
                                s = p;
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("double: " + name + "=" + Double.parseDouble(value));
                                number(name, Double.parseDouble(value));
                            }
                                break;
                            case 5:
                            // line 138 "JsonReader.rl"
                            {
                                String value = new String(data, s, p - s);
                                s = p;
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("long: " + name + "=" + Long.parseLong(value));
                                number(name, Long.parseLong(value));
                            }
                                break;
                            case 6:
                            // line 145 "JsonReader.rl"
                            {
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("boolean: " + name + "=true");
                                bool(name, true);
                                discardBuffer = true;
                            }
                                break;
                            case 7:
                            // line 151 "JsonReader.rl"
                            {
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("boolean: " + name + "=false");
                                bool(name, false);
                                discardBuffer = true;
                            }
                                break;
                            case 8:
                            // line 157 "JsonReader.rl"
                            {
                                String name = names.size > 0 ? names.pop() : null;
                                if (debug)
                                    System.out.println("null: " + name);
                                string(name, null);
                                discardBuffer = true;
                            }
                                break;
                            // line 298 "JsonReader.java"
                            }
                        }
                    }

                case 5:
                }
                break;
            }
        }

        // line 212 "JsonReader.rl"

    } catch (RuntimeException ex) {
        parseRuntimeEx = ex;
    }

    JsonValue root = this.root;
    this.root = null;
    current = null;
    lastChild.clear();

    if (p < pe) {
        int lineNumber = 1;
        for (int i = 0; i < p; i++)
            if (data[i] == '\n')
                lineNumber++;
        throw new SerializationException(
                "Error parsing JSON on line " + lineNumber + " near: " + new String(data, p, pe - p),
                parseRuntimeEx);
    } else if (elements.size != 0) {
        JsonValue element = elements.peek();
        elements.clear();
        if (element != null && element.isObject())
            throw new SerializationException("Error parsing JSON, unmatched brace.");
        else
            throw new SerializationException("Error parsing JSON, unmatched bracket.");
    } else if (parseRuntimeEx != null) {
        throw new SerializationException("Error parsing JSON: " + new String(data), parseRuntimeEx);
    }
    return root;
}