2013-03-29 7 views
13

मैंने कुछ JSON डेटा पार्स किया है और जब तक मैं इसे स्ट्रिंग चर में संग्रहीत करता हूं तब तक यह ठीक काम करता है।मैं JSON को int में कैसे पार्स करूं?

मेरी समस्या यह है कि मुझे एक int varibable में आईडी की आवश्यकता है और स्ट्रिंग में नहीं। मैंने एक कास्ट बनाने की कोशिश की है int id = (int) jsonObj.get("");

लेकिन यह एक त्रुटि संदेश देता है कि मैं किसी ऑब्जेक्ट को किसी int में परिवर्तित नहीं कर सकता। तो मैं का उपयोग करके परिवर्तित करने की कोशिश की:

String id = (String) jsonObj.get("id"); 
int value = Integer.parseInt(id); 

लेकिन यह भी कहा कि काम नहीं कर रहा। गलत क्या है। इंटेल के साथ काम कर रहा JSON कैसे है? मेरे तार केवल तभी ठीक काम कर रहे हैं जब मैं उन्हें एक int के रूप में बनाने की कोशिश करता हूं, मुझे समस्याएं मिलती हैं।

public void parseJsonData() throws ParseException { 

     JSONParser parser = new JSONParser(); 
     Object obj = parser.parse(jsonData); 
     JSONObject topObject = (JSONObject) obj; 
     JSONObject locationList = (JSONObject) topObject.get("LocationList"); 
     JSONArray array = (JSONArray) locationList.get("StopLocation"); 
     Iterator<JSONObject> iterator = array.iterator(); 

     while (iterator.hasNext()) { 

      JSONObject jsonObj = (JSONObject) iterator.next(); 
      String name =(String) jsonObj.get("name"); 
      String id = (String) jsonObj.get("id"); 
      Planner.getPlanner().setLocationName(name); 
      Planner.getPlanner().setArrayID(id); 


     } 

    } 

उत्तर

13

आप उपयोग कर सकते हैं parseInt:

int id = Integer.parseInt(jsonObj.get("id")); 

या बेहतर और अधिक सीधे getInt विधि:

int id = jsonObj.getInt("id"); 
+3

getInt() सरल Json – Josef

+0

के साथ काम नहीं कर रहा है आप क्या मतलब है? आपकी 'आईडी' स्ट्रिंग में बिल्कुल क्या है? –

+0

int id = Integer.parseInt (jsonObj.get ("id")); यह ग्रहण स्ट्रिंग में एक कलाकार जोड़ना चाहता है। – Josef

9

यह संपत्ति प्रकार पर निर्भर करता

यहाँ मेरी कोड है कि आप पार्सिंग कर रहे हैं।

तो json संपत्ति एक संख्या है (उदाहरण के लिए 5) आप सीधे लांग पर कास्ट कर सकते हैं ताकि आप कर सकता है: जिसका परिणाम

(long) jsonObj.get("id") // with id = 5, cast `5` to long 

लंबे, आप डाली सकता प्राप्त करने के बाद फिर से int करने के लिए,:

(int) (long) jsonObj.get("id") 

तो json संपत्ति, उद्धरण (जैसे "5") के साथ एक संख्या है एक स्ट्रिंग में माना जाता है है, और आप Integer.parseInt() या Long.parseLong() के लिए इसी तरह कुछ करने के लिए की जरूरत है;

Integer.parseInt(jsonObj.get("id")) // with id = "5", convert "5" to Long 

केवल मुद्दा है, अगर आप कभी कभी आईडी एक स्ट्रिंग है प्राप्त करते हैं या एक संख्या के रूप (आप नहीं कर सकते अपने ग्राहक के प्रारूप की भविष्यवाणी या इसे दूसरे के स्थान पर यह होता है), तो आप अपवाद हो सकती है, खासकर यदि आप parseInt का उपयोग/है लांग एक शून्य जेसन ऑब्जेक्ट पर।

तो जावा जेनेरिक्स, इन क्रम अपवाद है कि मैं का उपयोग से निपटने के लिए सबसे अच्छा तरीका है का उपयोग नहीं कर रहा है:

if(jsonObj.get("id") == null) { 
    // do something here 
} 

int id; 
try{ 
    id = Integer.parseInt(jsonObj.get("id").toString()); 
} catch(NumberFormatException e) { 
    // handle here 
} 

तुम भी है कि पहले अगर हटाने और पकड़ करने के लिए अपवाद जोड़ सकते हैं। उम्मीद है कि यह मदद करता है।

1

उनमें से कोई भी मेरे लिए काम नहीं करता है। मैं इस किया था और यह काम किया:

एक json के रूप में सांकेतिक शब्दों में बदलना करने के लिए:

JSONObject obj = new JSONObject(); 
obj.put("productId", 100); 

को डिकोड करने के लिए:

long temp = (Long) obj.get("productId"); 
4

बहुत सरल इसकी।

उदाहरण JSON:

{ 
    "value":1 
} 


int z = jsonObject.getInt("value"); 
0

मैं json.get() और instanceof के संयोजन का उपयोग मूल्यों या तो पूर्णांक या पूर्णांक तार हो सकता है कि में पढ़ने के लिए।

इन तीन परीक्षण मामले दिखाते हैं:

int val; 
Object obj; 
JSONObject json = new JSONObject(); 
json.put("number", 1); 
json.put("string", "10"); 
json.put("other", "tree"); 

obj = json.get("number"); 
val = (obj instanceof Integer) ? (int) obj : (int) Integer.parseInt((String) obj); 
System.out.println(val); 

obj = json.get("string"); 
val = (obj instanceof Integer) ? (int) obj : (int) Integer.parseInt((String) obj); 
System.out.println(val); 

try { 
    obj = json.get("other"); 
    val = (obj instanceof Integer) ? (int) obj : (int) Integer.parseInt((String) obj); 
} catch (Exception e) { 
    // throws exception 
} 
संबंधित मुद्दे