2014-10-14 8 views
8

मेरे कोड एक सर्वर से GET अनुरोध भेजता है BufferedReader परिवर्तित,JSONObject या मानचित्र

URL obj = new URL(url); 
    HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
    con.setRequestMethod("GET"); 
    con.setRequestProperty("User-Agent", USER_AGENT); 
    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); 

मैं एक BufferedReader उद्देश्य यह है कि प्रिंट,

{ 
    "status": "ERROR",  
    "errorCode": "MISSING_PARAMS",  
    "errorMessage": null,  
    "requestId": "20141014181739_11625805172",  
    "downstreamModuleErrorCode": null,  
    "object": [   
    "activity_code",   
    "activity_name", 
    "points", 
    "frequency", 
    "strategy", 
    "vsa_app_access_token"  
    ] 
} 

मिल मैं एक JSONObject या एक मानचित्र प्राप्त करना चाहते हैं इस से। मैंने इसे एक स्ट्रिंग में बदलने और इसे छेड़छाड़ करने की कोशिश की। लेकिन ऐसा करना इतना आसान नहीं है। कृपया मदद करे।

+0

मेरा जवाब जांचें। इसकी व्याख्या और काम कर रहा है। –

+0

मैंने इस लाइब्रेरी का उपयोग किया, http://docs.oracle.com/javaee/7/api/javax/json/ आप ऐसा कर सकते हैं: JsonReader jsonReader = Json.createReader (नया स्ट्रिंग रीडर (in.toString())); जेसनऑब्जेक्ट jsonObj = jsonReader.readObject(); एक जावा से परियोजना में –

+0

जावा पुस्तकालय? एक उचित पुस्तकालय जो फिट बैठता है एक की तरह अपनी आवश्यकताओं –

उत्तर

15

पहले स्ट्रिंग के रूप में करते हैं। आप की तरह

String message = org.apache.commons.io.IOUtils.toString(rd); 

या एक StringBuilder

StringBuilder sb = new StringBuilder(); 

    String line; 
    br = new BufferedReader(new InputStreamReader(is)); 
    while ((line = br.readLine()) != null) { 
     sb.append(line); 
    } 

कि के लिए कस्टम librarys का उपयोग तो फिर तुम यह पार्स कर सकते हैं कर सकते हैं। चूंकि यह एक वस्तु है क्योंकि "{" (सरणी शुरू होती है और समाप्त होती है] []) आपको JSONObject बनाने की आवश्यकता है।

JSONObject json = new JSONObject(sb.toString()); 

तो आप

//{ "status": "ERROR", "errorCode": "MISSING_PARAMS", "errorMessage": null, "requestId": "20141014181739_11625805172", "downstreamModuleErrorCode": null, "object": [ "activity_code", "activity_name", "points", "frequency", "strategy", "vsa_app_access_token" ]} 

json.getString("status"); 

या

JSONArray jsonArray = new JSONArray(json.getString("object")); 

के साथ सरणी के साथ अपने तत्वों का उपयोग कर सकते हैं या आप विधि का उपयोग getJSONArray()

JSONArray jsonArray = json.getJSONArray("object"); 
+0

ऊपर लिखा ive मैं कह कोई त्रुटि मिलती प्रयोग करके देखें: निर्माता JSONObject (स्ट्रिंग) अपरिभाषित है –

+1

आप org.json की जरूरत है। इसे maven http://mvnrepository.com/artifact/org.json/json के साथ प्राप्त करें या जिथब द्वारा लाइब्रेरी/कोड डाउनलोड करें। https://github.com/douglascrockford/JSON-java –

0

इस lib (org.json) आप वस्तुओं JSON तार में बदल सकते हैं का उपयोग करना: http://www.json.org/java/

JSONObject jsonObj = new JSONObject("{\"phonetype\":\"N95\",\"cat\":\"WP\"}"); 
1
InputStream inputStream = connection.getInputStream(); 

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
    StringBuilder builder = new StringBuilder(); 
    String line; 
    while ((line = bufferedReader.readLine()) != null) { 
     builder.append(line + "\n"); 
     } 

JSONArray jsonArray = new JSONArray(builder.toString()); 
for (int i = 0; i < jsonArray.length(); i++) { 
    JSONObject json = jsonArray.getJSONObject(i); 

    if (!json.get("object").equals(null)) { 
     JSONArray objectJsonArray = json.getJSONArray("object"); 
      for (int i = 0; i < objectJsonArray.length(); i++) { 
       JSONObject json = objectJsonArray.getJSONObject(i);  
      }  
    } 
} 

उम्मीद है कि यह मदद करता है।

+0

आप ऐसे कोड को कॉपी और पेस्ट क्यों करते हैं जो समाधान में फिट नहीं है? –

संबंधित मुद्दे