2010-01-09 28 views
7

के साथ जेसन फीड्स को पार्स करना मैं जानना चाहता हूं कि आइटम्स द्वारा JSON फ़ीड को कैसे पार्स करना है (उदाहरण के लिए प्रत्येक आइटम के लिए यूआरएल/शीर्षक/विवरण)। मैंने डॉक्टर/एपीआई को देखा है, लेकिन इससे मेरी मदद नहीं हुई।Google जीसन

यह मैं अब तक

import com.google.gson.Gson; 
import com.google.gson.JsonObject; 

public class ImportSources extends Job { 
    public void doJob() throws IOException { 
     String json = stringOfUrl("http://feed.test/all.json"); 
     JsonObject jobj = new Gson().fromJson(json, JsonObject.class); 
     Logger.info(jobj.get("responseData").toString()); 
    } 
    public static String stringOfUrl(String addr) throws IOException { 
     ByteArrayOutputStream output = new ByteArrayOutputStream(); 
     URL url = new URL(addr); 
     IOUtils.copy(url.openStream(), output); 
     return output.toString(); 
    } 
} 

उत्तर

9

क्या मिल गया है वास्तविक JSON प्रारूप पर निर्भर करता है। आप वास्तव में एक कस्टम जवाबीन वर्ग बना सकते हैं जो जेएसओएन प्रारूप से मेल खाता है। JSON में किसी भी फ़ील्ड को String, Integer, Boolean, आदि Javabean गुणों के रूप में मैप किया जा सकता है। किसी भी सरणी को List गुणों के रूप में मैप किया जा सकता है। किसी भी वस्तु को किसी अन्य नेस्टेड जावबीन संपत्ति के रूप में मैप किया जा सकता है। यह जावा में आगे प्रसंस्करण को बहुत आसान बनाता है।

आपकी तरफ से एक JSON स्ट्रिंग उदाहरण के बिना, यह अनुमान लगा रहा है कि यह कैसा दिखता है, इसलिए मैं यहां एक मूल उदाहरण नहीं दे सकता। लेकिन मैं यहाँ से पहले इसी तरह के जवाब पोस्ट किया है, तो आप इसे उपयोगी पाते हो सकता है:

Gson भी है एक User Guide, क्या आप इसे भी उपयोगी मिल सकता है।

+0

अपने जवाब के लिए धन्यवाद है, मैं निम्नलिखित फ़ीड की उदाहरण लागू करने के लिए प्रयास किया है: http://www.stocktwits.com/ स्ट्रीम/all.json। मैं शून्य से किसी भी अन्य मूल्य पाने के लिए प्रबंधन नहीं किया था। क्या मुझे दो समूह बनाने की ज़रूरत है: स्ट्रीम और ट्वीट्स? – Roch

0

मुझे नहीं पता कि जीएसओएन स्ट्रीमिंग/वृद्धिशील बाध्यकारी कर सकता है (मैंने सोचा कि यह नहीं था)।

लेकिन क्या उस विशिष्ट पुस्तकालय पर विचार करने का कोई विशिष्ट कारण है? अन्य जावा जेएसओएन प्रसंस्करण पुस्तकालय ऐसी प्रसंस्करण की अनुमति देते हैं (आप कुछ विचारों के लिए अन्य उत्तरों के लिंक देख सकते हैं), क्योंकि बड़ी फीड को संसाधित करते समय यह काफी महत्वपूर्ण विशेषता है।

+0

वैसे मैं आरएसएस फ़ीड के लिए आरओएमई का उपयोग कर रहा था, और जिस फ्रेमवर्क का मैं उपयोग कर रहा हूं उनमें जीसन शामिल है, Thats क्यों मैं इसका उपयोग करने की कोशिश कर रहा हूं, लेकिन मैं किसी अन्य पुस्तकालय के लिए खुला हूं। – Roch

+0

ठीक है। जैसे मैंने कहा, मुझे लगता है कि जीएसओएन केवल पूर्ण दस्तावेज बाध्यकारी करता है, लेकिन मैं 100% नहीं हूं। वैकल्पिक रूप से, जैक्सन (http://jackson.codehaus.org) वृद्धिशील बाध्यकारी, साथ ही कई अन्य ऑपरेटिंग मोड की अनुमति देता है। जिस तरह से काम करता है वह है कि आपको मुख्य चीज़ के लिए जेसन पार्सर प्राप्त करना होगा, मुख्य JSON सरणी या ऑब्जेक्ट पर पुनरावृत्ति करना होगा, और वास्तविक बाध्यकारी के लिए parser.readValueAs() को कॉल करना होगा। उपयोगकर्ता मेलिंग सूची विवरण के साथ मदद कर सकती है, अगर दस्तावेज़ीकरण में पर्याप्त पॉइंटर्स नहीं हैं। – StaxMan

3

जीसन 1.4 में एक नया एपीआई जेसनस्ट्रीम पार्सर है जो आपको स्ट्रीम से एकाधिक JSON ऑब्जेक्ट्स को एक-एक करके पार्स करने देता है।

1

आप जेसन ऑब्जेक्ट्स के लिए संबंधित जावा क्लास बना सकते हैं। पूर्णांक, स्ट्रिंग मानों को मैप किया जा सकता है। Json इस-

Gson gson = new GsonBuilder().create(); 
Response r = gson.fromJson(jsonString, Response.class); 

तरह पार्स किया जा सकता यहाँ एक उदाहरण http://rowsandcolumns.blogspot.com/2013/02/url-encode-http-get-solr-request-and.html

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