2014-12-23 10 views
7

मैं एक json फ़ाइल जो इस तरह दिखता है पार्स करने के लिए की जरूरत है:JSON जावा के लिए सरणी वस्तुओं

[ 
    { 
    "y": 148, 
    "x": 155 
    }, 
    { 
    "y": 135, 
    "x": 148 
    }, 
    { 
    "y": 148, 
    "x": 154 
    } 
] 

और मैं में इन एक्स-निर्देशांक और वाई-निर्देशांक रखना चाहते हैं एक JavaObject क्लिक करें, उस वर्ग इस तरह दिखता है :

public class Click { 
    int x; 
    int y; 


    public Click(int x, int y) { 
     this.x = x; 
     this.y = y; 
    } 

    public int getX() { 
     return x; 
    } 

    public void setX(int x) { 
     this.x = x; 
    } 

    public int getY() { 
     return y; 
    } 

    public void setY(int y) { 
     this.y = y; 
    } 
} 

मैं gson पर ध्यान दिया है, क्योंकि वे कहते हैं कि यह आसान छोड़ने रहा है, लेकिन मुझे नहीं कैसे मैं अपनी फ़ाइल से यह कर सकते हैं यह मिलता है।

+0

'[]' एक सरणी है, '{}' एक है वस्तु। –

उत्तर

13

अपने json स्ट्रिंग डेटा संभालने चर में संग्रहीत किया जाता jsonStr कहा जाता है:

String jsonStr = getJsonFromSomewhere(); 
Gson gson = new Gson(); 
Click clicks[] = gson.fromJson(jsonStr, Click[].class); 
0

एक और ठोस विकल्प Jackson है यह एक सुंदर ठोस ट्यूटोरियल लगता है। मैं इससे परिचित नहीं हूं, इसलिए मुझे आशा है कि इससे मदद मिलती है।

:

मुख्य विचार यह है कि यह एक वस्तु नक्शाकार

ObjectMapper mapper = new ObjectMapper(); 
User user = mapper.readValue(new File("c:\\user.json"), User.class); 

चरण 4 का उपयोग करता है आपका सर्वश्रेष्ठ दांव होना चाहिए, सिर्फ एहसास तो आप शायद User.class

संपादित के अलावा कुछ चाहते है यदि आप जीसन का उपयोग करने पर काफी सेट हैं, तो शायद अन्य समान उत्तरों को देखने में मदद मिलेगी। This question जेएसओएन को पीओजेओ (सादा ओल्ड जावा ऑब्जेक्ट्स) में कनवर्ट करने के बारे में है और यह कुछ और है जैसे यह चारों ओर तैर रहा है। दोबारा, मैं इनसे बहुत परिचित नहीं हूं और मैं कुछ सवालों के जवाब देने का प्रयास कर सकता हूं, लेकिन मुझे उम्मीद है कि यह आपको प्राप्त करेगा जहां आपको जाना होगा।

हैप्पी कोडिंग! यदि आपके कोई प्रश्न हैं तो एक टिप्पणी छोड़ दो।

+0

हाँ, मुझे पता है कि जैक्सन मौजूद है लेकिन जीसन इसके उपयोग में अधिक उपयोगकर्ता मित्रतापूर्ण और तेज़ लगता है लेकिन मुझे यह नहीं मिला है, User.class क्लिक.क्लास होगा, जहां तक ​​मुझे पहले से ही – ProblemAnswerQue

+0

पता चला है, जैक्सन काम करने के लिए आपको जीएसएस उदाहरण में अपनी कक्षा –

+0

के लिए एक खाली कन्स्ट्रक्टर भी होना चाहिए, उदाहरण के लिए वे इसे लिखते हैं: जीसन जीसन = नया जीसन(); System.out.println ( gson.fromJson ("{id ': 1,' firstName ':' लोकेश ',' अंतिम नाम ':' गुप्ता ',' भूमिकाएं ': [' व्यवस्थापक ',' प्रबंधक '] } ", कर्मचारी.क्लास)); आउटपुट: कर्मचारी [आईडी = 1, firstName = लोकेश, lastName = गुप्ता, भूमिकाओं = [व्यवस्थापक, प्रबंधक]] – ProblemAnswerQue

1

जीसन एपीआई और कुछ उदाहरण देखें। मैंने नीचे दिए गए लिंक डाले हैं!

String jsonString = //your json String 
Gson gson = new Gson(); 
Type typeOfList = new TypeToken<List<Map<String, Integer>>>() {}.getType(); 
List<Map<String, Integer>> list = gson.fromJson(jsonString, typeOfMap); 

List<Click> clicks = new ArrayList<Click>(); 
for(int i = 0; i < list.size(); i++) { 
    int x = list.get(i).get("x"); 
    int y = list.get(i).get("y"); 
    clicks.add(new Click(x, y)); 
} 

(http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/Gson.html) (http://google-gson.googlecode.com/svn/tags/1.5/src/test/java/com/google/gson/functional/MapTest.java)

+0

अब मैं इस: "। \\ data.json" निजी स्थिर अंतिम स्ट्रिंग FilePath = ; बुफर्ड रीडर ब्र; जीसन जीसन = नया जीसन(); क्लिक करें = gson.fromJson (br, click.class); System.out.println (क्लिक करें); लेकिन यह अभी भी कहता है कि मेरी जेसन फ़ाइल में गलत स्टार्टोबोजेक्ट और एंड ऑब्जेक्ट – ProblemAnswerQue

+0

है, मुझे यकीन नहीं है कि BufferedReader उस विधि में कैसे काम करता है। मुझे नहीं पता था कि आप ऐसा कर सकते हैं। यही कारण है कि आपको त्रुटि मिल रही है। – haley

+0

क्या आप जेसन को स्ट्रिंग में लाने पर फंस गए हैं? – haley

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