आपका डेटा समस्याग्रस्त है कि आपके भीतर आपके रैपर ऑब्जेक्ट्स हैं। संभवतः आपके Vendor
ऑब्जेक्ट को id
, name
, company_id
को संभालने के लिए डिज़ाइन किया गया है, लेकिन उनमें से प्रत्येक ऑब्जेक्ट को एक ऑब्जेक्ट में एक ही संपत्ति vendor
के साथ लपेटा गया है।
मुझे लगता है कि आप जैक्सन Data Binding मॉडल का उपयोग कर रहे हैं।
यदि ऐसा है तो वहाँ दो बातों पर विचार करने के लिए कर रहे हैं:
पहले एक विशेष जैक्सन config संपत्ति का उपयोग कर रहा है। जैक्सन - 1.9 से मेरा मानना है कि यदि आप जैक्सन के पुराने संस्करण का उपयोग कर रहे हैं तो यह उपलब्ध नहीं हो सकता है - UNWRAP_ROOT_VALUE
प्रदान करता है। यह उन मामलों के लिए डिज़ाइन किया गया है जहां आपके परिणाम शीर्ष-स्तरीय सिंगल-प्रॉपर्टी ऑब्जेक्ट में लपेटे गए हैं जिन्हें आप त्यागना चाहते हैं। आवरण वस्तुओं का उपयोग कर रहा
objectMapper.configure(SerializationConfig.Feature.UNWRAP_ROOT_VALUE, true);
दूसरा:
तो, के साथ चारों ओर खेलते हैं। बाहरी रैपर ऑब्जेक्ट को छोड़ने के बाद भी आपको एक ही-संपत्ति ऑब्जेक्ट में लिपटे Vendor
ऑब्जेक्ट्स की समस्या है। इस के आसपास पाने के लिए एक आवरण का उपयोग करें:
class VendorWrapper
{
Vendor vendor;
// gettors, settors for vendor if you need them
}
इसी तरह, बजाय UNWRAP_ROOT_VALUES
का उपयोग कर के, आप भी एक आवरण वर्ग बाहरी वस्तु को संभालने के लिए निर्धारित कर सकते हैं। यह मानते हुए कि आपके पास सही Vendor
, VendorWrapper
वस्तु, आप को परिभाषित कर सकते हैं:
class VendorsWrapper
{
List<VendorWrapper> vendors = new ArrayList<VendorWrapper>();
// gettors, settors for vendors if you need them
}
// in your deserialization code:
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readValue(jsonInput, VendorsWrapper.class);
VendorsWrapper के लिए वस्तु पेड़ आपके JSON के अनुरूप है:
VendorsWrapper:
vendors:
[
VendorWrapper
vendor: Vendor,
VendorWrapper:
vendor: Vendor,
...
]
अंत में, आप जैक्सन Tree Model उपयोग कर सकते हैं इस पार्स करने के लिए
mapper.readValue(node.get("vendor").getTextValue(), Vendor.class);
:
JsonNodes
, बाहरी नोड को त्यागकर, और
ArrayNode
में प्रत्येक
JsonNode
के लिए, बुला में
जिसके परिणामस्वरूप कम कोड हो सकता है, लेकिन यह दो रैपर का उपयोग करने से कम बेकार लगता है।
यह अमान्य JSON है। 'विक्रेताओं 'के पास एक सरणी मानी जाती है, जिसमें एक ही वस्तु होती है, और एकल ऑब्जेक्ट में' विक्रेता 'संपत्ति होती है, जिसके बाद एक नंगे शीर्ष-स्तरीय ओपेक्ट होता है। यानी दूसरी 'विक्रेता' ऑब्जेक्ट में सरणी में मौजूद एकल ऑब्जेक्ट में कोई संबंधित प्रॉपर्टी नहीं है। इसके अलावा, संपत्ति के नाम तार नहीं हैं, उन्हें JSON में उद्धृत करने की आवश्यकता है। मुझे लगता है कि आपने JSON को गलत में टाइप किया है? एक अच्छा जवाब यह जानने पर निर्भर करेगा कि आप किस प्रकार के JSOn वास्तव में काम कर रहे हैं। – pb2q
क्षमा करें, मुझे JSON को सही करने दें - अब –
तय किया जाना चाहिए आप एक विक्रेता श्रेणी नहीं कर सकते हैं (या नहीं चाहते) जिसमें एक सूची है? –
hertzsprung