2011-06-22 22 views
14

मैं एक सर्वर है कि इस तरह दिखता है से एक निर्गम पार्स करने के लिए कोशिश कर रहा हूँ के साथ:पार्स JSON org.json

{ 
    "GetFolderFilesByZoneResult": [ 
    { 
     "ID": 98748, 
     "CreatedBy": "", 
     "UpdatedBy": "none", 
     "CreatedDate": "\/Date(1308273033620+0100)\/", 
     "UpdatedDate": "\/Date(1308303003770+0100)\/", 
     "CommentCount": 0, 
     "Key": "", 
     "Enabled": true, 
     "MimeType": "video", 
     "Votes": 2, 
     "TotalRating": 0, 
     "AllowComments": true, 
     "ViewCount": 323, 
     "ReleaseDate": "\/Date(1308273000000+0100)\/", 
     "ExpireDate": "\/Date(4102444800000+0000)\/", 
     "Author": "", 
     "Size": 133799936, 
     "Tag1": "", 
     "Tag2": "", 
     "Tag3": "", 
     "RecycleBin": false 
    }, 
    { 
     "ID": 99107, 
     "CreatedBy": "", 
     "UpdatedBy": "none", 
     "CreatedDate": "\/Date(1308583412520+0100)\/", 
     "UpdatedDate": "\/Date(1308583564007+0100)\/",  
     "CommentCount": 0, 
     "Key": "", 
     "Enabled": true, 
     "MimeType": "video", 
     "Votes": 0, 
     "TotalRating": 0, 
     "AllowComments": true, 
     "ViewCount": 33, 
     "ReleaseDate": "\/Date(1308583380000+0100)\/", 
     "ExpireDate": "\/Date(4102444800000+0000)\/", 
     "Author": "", 
     "Size": 47955968, 
     "Tag1": "", 
     "Tag2": "", 
     "Tag3": "", 
     "RecycleBin": false 
    } 
    ] 
} 

मैं जावा org.json उपयोग करने के लिए यह पार्स करने का प्रयास कर रहा हूँ, लेकिन मैं डॉन ' जेएसओएन/org.json के साथ कोई अनुभव नहीं है, तो मुझे थोड़ा परेशानी हो रही है। मैं इसे कैसे पार्स कर सकता हूं?

+0

JSON इनपुट से डेटा को पार्स करने के बाद, आप जावा कोड में इसका उपयोग कैसे करना चाहते हैं? क्या आप एक कस्टम जावा डेटा संरचना को पॉप्युलेट करने की कोशिश कर रहे हैं, या आप बस JSON से एक या दो मानों को पुनर्प्राप्त करना चाहते हैं और आगे बढ़ना चाहते हैं? –

उत्तर

29

1) मान लें कि आपके पास अपने पथ पर JSON पुस्तकालय हैं (www.json.org से), यह बहुत आसान है।

import org.json.JSONTokener; 
... 

URI uri = new URI("http://someserver/data.json"); 
JSONTokener tokener = new JSONTokener(uri.toURL().openStream()); 
JSONObject root = new JSONObject(tokener); 

वहां से, आप JSON ऑब्जेक्ट के विभिन्न हिस्सों को संबोधित कर सकते हैं। विनिर्देशों के लिए जावाडॉक्स पर एक नज़र डालें।

Object json = new JSONTokener(response).nextValue(); 

तो फिर तुम प्रकार जिसके परिणामस्वरूप निर्धारित है और यह उचित रूप से निपटने कर सकते हैं: https://developer.android.com/reference/org/json/package-summary.html

+0

इसके साथ मुझे अंतिम पंक्ति पर निम्न त्रुटि मिलती है: थ्रेड "अपवाद" में अपवाद java.lang.RuntimeException: असम्बद्ध स्रोत कोड - त्रुटिपूर्ण ctor sym प्रकार:

+0

क्या आप जिस कोड में समस्याएं हैं, उसे पोस्ट कर सकते हैं? – JohnnyO

+0

आपके द्वारा पोस्ट किए गए सटीक कोड के साथ, केवल अंतर यूआरएल –

-2

मैं पारित यह

map<String, Object> 

map<String, Object> 
वस्तु क्षेत्र में

के साथ भरी हुई होगी।

मूल रूप से बड़े मानचित्र के अंदर आपके जावा कक्षाओं के पदानुक्रम को पुनर्निर्माण करना।

उदाहरण:

return (Map<"GetFolderFilesByZoneResult", Map<"Result1", (object by id 98748) | "Result2", (object by id 99107) | "Result3", etc. 

JSON कि बड़ा नक्शा वापस आ जाएगी बहुत सुंदर है, और प्रोग्राम के रूप में यह तो सूचियों करने के लिए आसान है।

+1

मैं देखता हूं, लेकिन मैं org.json के साथ उस ऑब्जेक्ट/सरणी/मानों को कैसे पार्स कर सकता हूं? क्या आप कुछ कोड प्रदान कर सकते हैं? –

+0

यह स्वचालित रूप से करता है। इसे एक ऑब्जेक्ट दबाएं और यह इसे डीकोड करता है। उदाहरण के लिए मेरे मैप उदाहरण में, यह ऑब्जेक्ट वैरिएबल "स्ट्रिंग आईडी = 99107" फ़ील्ड जेएसओएन में "आईडी: 99107" के रूप में डीकोड करता है। – TravMan

+0

मुझे लगता है कि सवाल बिल्कुल विपरीत था, एक जेसन सामग्री ले लो और जावा ऑब्जेक्ट में इसका मूल्य प्राप्त करें। –

4

यहां सबसे सार्वभौमिक समाधान है, जो उचित जावा प्रकार में किसी भी JSON प्रकार पार्स करने के लिए अनुमति देता है।

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