2013-04-18 37 views
8

Trong Java, tôi biết bạn có thể kiểm tra xem một khóa có hiện diện với phương thức isNull() hay không. Có cách nào để kiểm tra loại khóa dữ liệu nào?Làm thế nào để kiểu dữ liệu của một thuộc tính JSON được xác định?

Hãy xem xét các ví dụ sau.

tôi sẽ muốn có một chức năng như JSONBody.getDataType ("key") và nó sẽ trở Chuỗi

{ 
    "key" : "value" 
} 

tôi sẽ muốn có một chức năng như JSONBody.getDataType ("key") và nó sẽ quay trở lại JSONObject

{ 
    "key" : { 
     "parm1" : "value1", 
     "parm2" : "value2" 
    } 
} 

tôi sẽ muốn có một chức năng như JSONBody.getDataType ("key") và nó sẽ quay trở lại JSONArray

{ 
    "key" : [ 
     "value1", 
     "value2", 
     "value3" 
    ] 
} 

Tôi muốn có một hàm như JSONBody.getDataType ("khóa") và nó sẽ trả lại Boolean

{ 
    "key" : true 
} 

Có điều gì như thế này không?

+1

Xem http://stackoverflow.com/questions/9844494/json-to-java-objects-best-practice-for-modeling-the-json-stream .... không có xsd;) – MemLeak

+2

Ví dụ mảng của bạn là (không đúng) xác định đối tượng JSON, không phải mảng; cần phải chuyển các dấu ngoặc nhọn cho các dấu ngoặc vuông. –

+0

Bạn có thể thực hiện một IF khác và sử dụng thể hiện của hoặc bằng. Kiểm tra chủ đề này: http://stackoverflow.com/questions/106336/how-do-i-find-out-what-type-each-object-is-in-a-arraylistobject – MasNotsram

Trả lời

6
JSONObject stuff = new JSONObject(whatever); 
Object thing = stuff.get("key"); 
String classNameOfThing = thing.getClass().getName(); 
Systen.out.println("thing is a " + classNameOfThing); 
if (thing instanceof Integer) { 
    System.out.println("thing is an Integer"); 
} 
+0

hoàn hảo. cảm ơn – David

Các vấn đề liên quan