JSONObject가 null인지 존재하지 않는지 테스트하는 방법
나는 한 세트를 가지고 있다.JSONObject
서버로부터 수신해, 조작하는 값.대부분의 경우, 나는JSONObject
값(예를 들어 통계)이 포함되어 있으며 경우에 따라서는 값이 반환됩니다.Error
오브젝트에 코드와 오류 설명을 입력합니다.
에러가 반환되어도 끊어지지 않도록 코드를 구조화하려면 어떻게 해야 합니까?할 수 있을 줄 알았는데 안 되네.
public void processResult(JSONObject result) {
try {
if(result.getJSONObject(ERROR) != null ){
JSONObject error = result.getJSONObject(ERROR);
String error_detail = error.getString(DESCRIPTION);
if(!error_detail.equals(null)) {
//show error login here
}
finish();
}
else {
JSONObject info = result.getJSONObject(STATISTICS);
String stats = info.getString("production Stats"));
}
}
}
사용하다.has(String)
그리고..isNull(String)
보수적인 사용법은 다음과 같습니다.
if (record.has("my_object_name") && !record.isNull("my_object_name")) {
// Do something with object.
}
조금 늦을지도 모르지만(확실히) 나중에 독자를 위해 게시합니다.
예외 없이 사용할 수 있으며
이름이 있고 JSONObject이면 이름으로 매핑된 값을 반환하고 그렇지 않으면 null을 반환합니다.
할 수 있도록
JSONObject obj = null;
if( (obj = result.optJSONObject("ERROR"))!=null ){
// it's an error , now you can fetch the error object values from obj
}
또는 값을 가져오지 않고 Null만 테스트하는 경우
if( result.optJSONObject("ERROR")!=null ){
// error object found
}
모든 옵션 기능 패밀리가 반환됩니다.null
또는 오버로드된 버전을 사용하여 미리 정의된 값을 반환할 수도 있습니다.예
String optString (String name, String fallback)
이름별로 매핑된 값이 있으면 반환하고 필요한 경우 강제로 반환하거나 매핑이 없는 경우 폴백을 반환합니다.
어디에coercing
즉, 값을 String 타입으로 변환하려고 합니다.
다중 검색을 배제하기 위해 @TheMonkeyMan 응답 수정 버전
public void processResult(JSONObject result) {
JSONObject obj = null;
if( (obj = result.optJSONObject("ERROR"))!=null ){
//^^^^ either assign null or jsonobject to obj
// if not null then found error object , execute if body
String error_detail = obj.optString("DESCRIPTION","Something went wrong");
//either show error message from server or default string as "Something went wrong"
finish(); // kill the current activity
}
else if( (obj = result.optJSONObject("STATISTICS"))!=null ){
String stats = obj.optString("Production Stats");
//Do something
}
else
{
throw new Exception("Could not parse JSON Object!");
}
}
JSONObject에는 키를 결정하는 'Has' 메서드가 있습니다.
이것이 효과가 있을지는 모르겠지만 믿을만해 보인다.
public void processResult(JSONObject result) {
if(result.has("ERROR"))
{
JSONObject error = result.getJSONObject("ERROR")
String error_detail = error.getString("DESCRIPTION");
if(error_detail != null)
{
//Show Error Login
finish();
}
}
else if(result.has("STATISTICS"))
{
JSONObject info = result.getJSONObject("STATISTICS");
String stats = info.getString("Production Stats");
//Do something
}
else
{
throw new Exception("Could not parse JSON Object!");
}
}
Java의 Null 값을 사용하는 것보다 NULL 개체를 갖는 것이 더 편리하고 덜 모호할 수 있습니다.
JSONObject.NULL.equals(null)는 true를 반환합니다.
JSONObject.NULL.toString()은 "null"을 반환합니다.
예:
System.out.println ( test . get ( " address " ) . equals ( null ) ; // 기본 설정 방법 System . out . println ( test . get String ( " address ) . equals ( " null ) ) ;
source -- JSONObject oracle docs
주의사항:
EE8 json 사양으로 예외적으로 안전한 다음을 얻을 수 있습니다.
result.asJsonObject().getString("ERROR", null);
단, 체크하고 싶은 경우 다음 방법으로 체크할 수 있습니다.
result.asJsonObject().get("ERROR").equals(JsonValue.NULL)
만약 당신 코드의 어느 한 번이라도org.json.JSONObject json_object
된다null
그리고 당신은 피하고 싶다.NullPointerException
(102.1984).특수한 포인터예외)를 선택하면 다음과 같이 체크합니다.
if(json_object == null) {
System.out.println("json_object is found as null");
}
else {
System.out.println("json_object is found as not null");
}
어떤 경우든 json 객체는 null입니다.그런 다음 이 문을 사용하여 jsonobject가 null인지 여부를 확인합니다.
if (!obj.get("data").isJsonNull()){
//Not Null
}else{
//Null
}
또한 json 객체의 존재 여부를 확인하려면 .has를 사용합니다.
if (!obj.has("data")){
//Not Exist
}else{
//Exist
}
언급URL : https://stackoverflow.com/questions/12585492/how-to-test-if-a-jsonobject-is-null-or-doesnt-exist
'programing' 카테고리의 다른 글
누군가가 AngularJS 스코프에 대한 $destroy 이벤트의 예를 제공할 수 있습니까? (0) | 2023.03.28 |
---|---|
AngularJS: 폼 트리거 내의 모든 버튼이 전송됩니까? (0) | 2023.03.28 |
Node.js 아래에 JSON을 쉽게 저장하는 방법 (0) | 2023.03.28 |
Oracle에서 CLOB 열의 크기를 바이트 단위로 가져오는 방법 (0) | 2023.03.28 |
Jeest에서 예기치 않은 토큰이 발견되었습니다. (0) | 2023.03.28 |