2012-12-13 25 views
5

में बच्चे खेतों विलय चलो कहते हैं कि मुझे लगता है कि इस तरह दिखता है जावा वर्गों करते हैं:जैक्सन: नेस्टेड वस्तुओं का उपयोग कर वस्तुओं पर JSON को क्रमबद्धता, मालिक वर्ग

public class A { 
    public String name; 
    public B b; 
} 

public class B { 
    public int foo; 
    public String bar; 
} 

मैं JSON में A का एक उदाहरण क्रमानुसार करने चाहते हैं। इस कोड का प्रयोग

A a = new A(...); 
String json = new ObjectMapper().writeValueAsString(a); 

, मेरे JSON इस प्रकार दिखाई देगा:: मैं Jackson से ObjectMapper वर्ग का उपयोग करने के लिए जा रहा हूँ

{ 
    "name": "MyExample", 
    "b": { 
     "foo": 1, 
     "bar": "something" 
    } 
} 

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

{ 
    "name", "MyExample", 
    "foo": 1, 
    "bar": "something" 
} 

कोई भी विचार?

उत्तर

9

व्यक्तिगत रूप से मुझे लगता है कि आप संरचना के लिए मैपिंग संरचना से बेहतर हो सकते हैं, और अतिरिक्त परिवर्तन नहीं कर सकते हैं।

लेकिन यदि आप योजना के साथ जाना चाहते हैं, तो बस जैक्सन 2.x का उपयोग करें, और संपत्ति b पर एनोटेशन जोड़ें। यह ट्रिक काम आना चाहिए।

+1

दरअसल, जैक्सन 1.9.एक्स ('फास्टएक्सएमएल पैकेज के बजाय कोडहॉस) में' @ जेसनउनवार्ड 'उपलब्ध है। फिर भी, इस समाधान ने बढ़िया काम किया! बहुत बहुत धन्यवाद: डी – ecbrodie

+0

आह। आप सही हैं। :) – StaxMan

+0

मेरे पास अब भी एक ही समस्या है, लेकिन इस एनोटेशन ने इसे हल नहीं किया है। मेरी संपत्ति निजी है और जब मैं इसे विवरण में फिट करने के लिए सार्वजनिक करता हूं, तो कक्षा बी के तरीके प्राप्त करने के बारे में शिकायत करना शुरू होता है। – Sarge