2012-01-10 50 views
23

thành viên stackoverflow tôi cần một số trợ giúp từ bạn.Cách so sánh giá trị null từ JsonObject trong java

Tôi gặp một JSONObject đưa ra dưới đây

{ 
"Id": null, 
"Name": "New Task", 
"StartDate": "2010-03-05T00:00:00", 
"EndDate": "2010-03-06T00:00:00", 
"Duration": 1, 
"DurationUnit": "d", 
"PercentDone": 60, 
"ManuallyScheduled": false, 
"Priority": 1, 
"parentId": null, 
"index": 2, 
"depth": 1, 
"checked": null } 

tôi đang nhận được ParentID như null. Tôi muốn thay thế các giá trị ParentID từ null để 0.

Tôi cố gắng để làm điều đó với dưới đây đề cập đang

if(jsonObject.get("parentId") == null || jsonObject.get("parentId") == "") 
    { 
     System.out.println("inside null"); 
     jsonObject.put("parentId", 0); 
    } 
    else 
    { 
     System.out.println("inside else part"); 
     //jsonObject.put("parentId", jsonObject.getInt("parentId")); 
     jsonObject.put("parentId", 0); 
    } 

nhưng có vẻ như không được làm việc. Những gì tôi đang làm sai ở đây.

+1

gì xảy ra với đối tượng json sau mã được thực thi? Đầu ra của System.out.printlns là gì? Yêu cầu JsonObject hay chỉ là trình phân tích cú pháp Json bạn đã chọn? –

+0

Tôi không nhận được bất kỳ đầu ra nào. nhưng trước nếu điều kiện nếu tôi đặt ** System.out.println ("JSON OBJECT VALUE CHO PARENTID ::" + jsonObject.get ("parentId")); ** tôi nhận được giá trị in ra là ** null ** vì vậy tôi muốn kiểm tra nó bằng cách sử dụng nếu điều kiện nhưng nó luôn luôn đi đến phần khác chỉ. Không biết vấn đề là gì trong số – yaryan997

+0

"tôi không nhận được bất kỳ đầu ra nào" ý của bạn là gì? Hoặc bạn nhận được println từ trường hợp 'then' hoặc từ trường hợp 'khác'. – Viruzzo

Trả lời

98

Sử dụng các phương pháp sau đây của JSONObject để kiểm tra xem một giá trị so với một phím bất kỳ là null

public boolean isNull(java.lang.String key) 

Phương pháp này được sử dụng để kiểm tra Null chống lại bất kỳ phím nào hoặc nếu không có giá trị cho phím.

việc kiểm tra này trong documentation

đang thay đổi của bạn nên được như thế này

if(jsonObject.isNull("parentId")) 
    { 
     System.out.println("inside null"); 
     jsonObject.put("parentId", 0); 
    } 
    else 
    { 
     System.out.println("inside else part"); 
     //jsonObject.put("parentId", jsonObject.getInt("parentId")); 
     jsonObject.put("parentId", 0); 
    } 
+0

cảm ơn bạn đã trả lời nhưng jsonlib-2.2.3.jar của tôi không có khai báo phương thức ** isNull ** trong đó. vì vậy làm thế nào để so sánh dữ liệu json mẫu đối tượng nll. ?? – yaryan997

+3

Trong jsonlib-2.2.3.jar, kiểm tra lớp net.sf.json.util.JSONUtils có isNull phương thức –

+4

có .. rao i đã làm nó bằng cách sử dụng lớp JSONUtils ** boolean jsonUtils = JSONUtils.isNull (jsonObject.get ("parentId ")); ** thanx cho hỗ trợ của bạn – yaryan997

0

Hãy thử các mã sau đây.

if(jsonObject.isNull("parentId") || jsonObject.get("parentId").equals("")) 
+0

điều này không hoạt động trong 'json.simple. *' được sử dụng trong 'json.simple' –

3
if(jsonObject.isNull("parentId")){ 
    jsonObject.put("parentId", 0); 
} 
+0

điều này không hoạt động trong' json.simple. * 'cái gì sẽ được sử dụng trong' json.simple' –

0

Đối com.google.gson.JsonObject, tôi theo này:

boolean isIdNull = jsonObject.get("Id").isJsonNull(); 

Trong json tôi, tôi có:

"Id":null 
Các vấn đề liên quan