programing

JSONObject에서 값 유형을 확인하려면 어떻게 해야 합니까?

powerit 2023. 2. 22. 23:18
반응형

JSONObject에서 값 유형을 확인하려면 어떻게 해야 합니까?

에 저장된 값의 유형을 가져오려고 합니다.JSONObject.

String jString = {"a": 1, "b": "str"};
JSONObject jObj = new JSONObject(jString);

키에 저장된 값의 유형을 가져올 수 있습니까?"a";와 같은jObj.typeOf("a") = java.lang.Integer?

JSON에서 오브젝트를 취득하려면 메서드를 사용하여 다음 명령을 사용합니다.instanceofoperator를 사용하여 오브젝트 유형을 확인합니다.

다음 줄에 있는 것:-

String jString = "{\"a\": 1, \"b\": \"str\"}";
JSONObject jObj = new JSONObject(jString);
Object aObj = jObj.get("a");
if (aObj instanceof Integer) {
    // do what you want
}

가장 좋은 해결책은 다음을 사용하여 유형을 확인하는 것입니다.instanceof교환입니다.

주의하시기 바랍니다.JSONObject.get()다음 중 하나의 정수를 반환할 수 있습니다.java.lang.Integer또는java.lang.Long예를 들어,{a:3,b:100300000000}알 수 있다

D/+++     ( 5526): +++a=>class java.lang.Integer:3
D/+++     ( 5526): +++b=>class java.lang.Long:100300000000

다음과 같은 코드를 사용합니다(유형을 사용합니다).long그리고.double대신int그리고.float내 태스크에 네스트된 항목이 없거나 지원되지 않는 경우:

    for (String k : new AsIterable<String>(json.keys())) {
            try {
                    Object v = json.get(k);
        //Log.d("+++","+++"+k+"=>"+v.getClass()+":"+v);
                    if (v instanceof Integer || v instanceof Long) {
                            long intToUse = ((Number)v).longValue();
                            ...
                    } else if (v instanceof Boolean) {
                            boolean boolToUse = (Boolean)v).booleanValue();
                            ...
                    } else if (v instanceof Float || v instanceof Double) {
                            double floatToUse = ((Number)v).doubleValue();
                            ...
                    } else if (JSONObject.NULL.equals(v)) {
                            Object nullToUse = null;
                            ...
                    } else {
                            String stringToUse = json.getString(k);
                            ...
                    }
            } catch (JSONException e2) {
                    // TODO Auto-generated catch block
                    Log.d("exc: "+e2);
                    e2.printStackTrace();
            }
    }

어디에AsIterable를 사용합시다.for(:)루프는 다음과 같이 정의됩니다.

public class AsIterable<T> implements Iterable<T> {
    private Iterator<T> iterator;
    public AsIterable(Iterator<T> iterator) {
        this.iterator = iterator;
    }
    public Iterator<T> iterator() {
        return iterator;
    }
}

JSON/Json에서 요소 값의 데이터 유형을 찾는 방법을 찾았습니다.나한테는 아주 잘 되고 있어.

JSONObject json = new JSONObject(str);
                Iterator<String> iterator = json.keys();

                if (iterator != null) {
                    while (iterator.hasNext()) {
                        String key = iterator.next();
                        Object value = json.get(key);
                        String dataType = value.getClass().getSimpleName();

                        if (dataType.equalsIgnoreCase("Integer")) {
                            Log.i("Read Json", "Key :" + key + " | type :int | value:" + value);

                        } else if (dataType.equalsIgnoreCase("Long")) {
                            Log.i("Read Json", "Key :" + key + " | type :long | value:" + value);

                        } else if (dataType.equalsIgnoreCase("Float")) {
                            Log.i("Read Json", "Key :" + key + " | type :float | value:" + value);

                        } else if (dataType.equalsIgnoreCase("Double")) {
                            Log.i("Read Json", "Key :" + key + " | type :double | value:" + value);

                        } else if (dataType.equalsIgnoreCase("Boolean")) {
                            Log.i("Read Json", "Key :" + key + " | type :bool | value:" + value);

                        } else if (dataType.equalsIgnoreCase("String")) {
                            Log.i("Read Json", "Key :" + key + " | type :string | value:" + value);

                        }
                    }
                }

모든 데이터를 다음과 같이 해석할 수 있습니다.String원하는 타입으로 변환해 보겠습니다.이 때 예외를 포착하여 구문 분석된 데이터 유형을 결정할 수 있습니다.

instanceof효과가 없어요.최신 버전에서 필드의 데이터 유형을 동적으로 가져오려면JSONObject.get당신이 할 수 있는 것은 그것을 로서 얻는 것이다.JsonPrimitive맘에 들다

JsonPrimitive value = json.getAsJsonPrimitive('key');

이제 전화를 걸 수 있습니다.

value.isNumber() value.isBoolean() value.isString()

언급URL : https://stackoverflow.com/questions/15920212/how-to-check-the-type-of-a-value-from-a-jsonobject

반응형