JSONObject에서 값 유형을 확인하려면 어떻게 해야 합니까?
에 저장된 값의 유형을 가져오려고 합니다.JSONObject
.
String jString = {"a": 1, "b": "str"};
JSONObject jObj = new JSONObject(jString);
키에 저장된 값의 유형을 가져올 수 있습니까?"a"
;와 같은jObj.typeOf("a") = java.lang.Integer
?
JSON에서 오브젝트를 취득하려면 메서드를 사용하여 다음 명령을 사용합니다.instanceof
operator를 사용하여 오브젝트 유형을 확인합니다.
다음 줄에 있는 것:-
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
'programing' 카테고리의 다른 글
스프링 데이터 및 페이지 번호 지정 네이티브 쿼리 (0) | 2023.02.22 |
---|---|
리액트 JS에서 이미지를 업로드하는 방법 (0) | 2023.02.22 |
사용자가 뒤로 버튼을 사용하여 페이지에 접속했는지 여부를 감지하려면 어떻게 해야 합니까? (0) | 2023.02.22 |
setInterval()을 사용한 간단한 연속 폴링 실행 (0) | 2023.02.22 |
null과 undefined를 모두 확인할 수 있는 방법이 있을까요? (0) | 2023.02.22 |