2013-08-25 9 views
42

का उपयोग करने के लिए निर्भरताओं का सही सेट मैं जैक्सन के लिए नया हूं और मैं अभ्यास के लिए कुछ कोड लिख रहा था। मैं जैक्सन पुस्तकालय Fasterxml पर पाया जा सकता का नया संस्करण पता चला: Jackson, इसलिए मैं अपने Maven पोम फाइल करने के लिए नीचे दिए गए निर्भरता कहा:जैक्सन मैपर

<dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-annotations</artifactId> 
      <version>2.2.2</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-core</artifactId> 
      <version>2.2.2</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

मैं उम्मीद कर रहा था कि मैं ObjectMapper सीधे उपयोग कर सकते हैं, हालांकि काफी समय बिताने के बाद मुझे पता चला कि ObjectMapper मैं है उपयोग करने के लिए नीचे दिए गए पुराने पुस्तकालयों को जोड़ने के लिए:

<dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-mapper-asl</artifactId> 
      <version>1.9.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-core-asl</artifactId> 
      <version>1.9.2</version> 
     </dependency> 

मैं थोड़ा उलझन में हूँ। क्या कोई मुझे बता सकता है कि वह क्यों है?

+0

क्या आपके पास पैकेज नामों के साथ समस्याएं हैं? जहां तक ​​मैं com.fasterxml.jackson.databind.ObjectMapper देखता हूं जैक्सन-डाटाबेस-2.2.2.jar – efan

+0

समस्या का हिस्सा है कि जैसे ही मैं अंतिम दो निर्भरताओं को हटा देता हूं। मैं ऑब्जेक्टमैपर की वजह से अपना कोड संकलित नहीं कर सकता। "पैकेज नाम" से आपका क्या मतलब है? thx – Hossein

+6

मेरे लिए ऐसा लगता है कि कोड com.fasterxml.jackson.databind.ObjectMapper के बजाय org.codehaus.jackson.map.ObjectMapper का उपयोग कर रहा है और इसके कारण कक्षा नहीं मिल सका और संकलित नहीं हो सका। – efan

उत्तर

2

जैक्सन 2.x में पैकेज नाम com.fasterxml1org.codehaus2 से बदल गए हैं। इसलिए यदि आपको ऑब्जेक्टमैपर की आवश्यकता है, तो मुझे लगता है कि जैक्सन 1.X आपकी आवश्यकताओं से संतुष्ट हो सकता है।

6

नहीं, आप बस com.fasterxml.jackson.databind.ObjectMapper का उपयोग कर सकते हैं। अधिकतर आप अपने import -statements को ठीक करने के लिए भूल गए हैं, कोडहॉस के सभी संदर्भ हटाएं और आप सुनहरे हैं।

26
<properties> 
    <!-- Use the latest version whenever possible. --> 
    <jackson.version>2.4.4</jackson.version> 
</properties> 
<dependencies> 
    <dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>${jackson.version}</version> 
    </dependency> 
</dependencies> 

आपके पास ऑब्जेक्टमैपर (जैक्सन डाटाबेस पैकेज से) आसान है। यदि हां, तो आप कर सकते हैं:

JsonFactory factory = objectMapper.getFactory(); 

स्रोत: https://github.com/FasterXML/jackson-core

तो, 3 "fasterxml" निर्भरता जो आप पहले से ही u'r पोम में है के रूप में यह जैक्सन-DataBind शामिल ObjectMapper लिए पर्याप्त हैं।

0

मैंने इस पर कुछ घंटे बिताए।

यहां तक ​​कि अगर मैं इस समस्या निर्भरता का अधिकार था ही तय किया गया था के बाद मैं सी के तहत .m2 भंडार में com.fasterxml.jackson फ़ोल्डर को हटाया: \ Users \ username.m2 और

1

अलावा परियोजना अद्यतन से आयात को ठीक करना, ताजा maven clean compile -U करें। -U विकल्प पर ध्यान दें, जो नई निर्भरताओं को लाता है जो कभी-कभी संपादक के साथ कठिन समय होता है। संकलन को गैर-आयातित कक्षाओं के कारण विफल होने दें, लेकिन कम से कम आपके पास maven कमांड के बाद उन्हें आयात करने का विकल्प है।

बस मेवेन कर रहे हैं-> इंटेलिज से रीमपोर्ट मेरे लिए काम नहीं किया।