/ / सीरियल का नक्शा [A, B] लिफ्ट-json के साथ A <-> स्ट्रिंग - json, scala, क्रमांकन, लिफ्ट-json के साथ जानें

सीरियलियाज़ एक नक्शा [ए, बी] लिफ्ट-जेसन के साथ ए <-> स्ट्रिंग - जेसन, स्कैला, सीरियलाइजेशन, लिफ्ट-जेसन

मैं एक HashMap प्रकार को क्रमबद्ध करना चाहता हूंहैशपॉप [कॉर्ड, यूनाइट] लिफ्ट-ज्सन के साथ। वे प्रकार मेरी परियोजना के लिए विशिष्ट हैं, लेकिन वहाँ तार है -> स्ट्रिंग समारोह के साथ स्ट्रिंग और मैं स्ट्रिंग से मेरे कोर्ड वापस आ सकते हैं (भले ही यह यहाँ कोडित नहीं है लेकिन यह प्रासंगिक नहीं है)। इसलिए मैंने सोचा कि मैं मानचित्र-स्ट्रिंग, कोर्ड] को क्रमबद्ध करने के लिए लिफ्ट-जसन से पूछ सकता हूं, लेकिन यहां पर क्रमबद्ध (प्रारूप) (y) एक ही फ़ंक्शन (एक पुनरावर्ती तरीके से) को लागू करने का प्रयास करें जब मैं चाहता हूं कि यह क्रमबद्ध फ़ंक्शन का उपयोग किया जाए। मानचित्र [स्ट्रिंग, Coord]। कारण यह है कि मैं Serializer के बाहर परिवर्तन नहीं कर सकता क्योंकि यह HashMap एक बड़े केस क्लास का हिस्सा है, इसलिए मुझे यह जानने के लिए लिफ्ट-जोंस की आवश्यकता है कि इसे कैसे सीरियस और डिसेर्बलाइज़ किया जाए।

class UnitzSerializer extends Serializer[HashMap[Coord,Unite]] {

private val UnitzClass = classOf[HashMap[Coord,Unite]]

def deserialize(implicit format:Formats): PartialFunction[(TypeInfo,JValue), HashMap[Coord,Unite]]= {
case (TypeInfo(UnitzClass,_), json) => json match {
case x:JValue => (deserialize(format)((TypeInfo(classOf[Map[String,Unite]],None),x))).map(y => (Coord(0,0),y._2))
case _  => throw new Exception("ONOz")
}
}


def serialize(implicit format: Formats): PartialFunction[Any, JValue] = {
case x: HashMap[Coord,Unite] => {
val y:Map[String,Unite] = x.map(z => (z._1.toString,z._2))
serialize(format)(y)
}
}

}

मैं एक मानचित्र [स्ट्रिंग, यूनाइट] के क्रमांकन और डीरियलाइज़ेशन को फिर से लिख सकता हूं, लेकिन यह बहुत बेकार कोड होगा क्योंकि मुझे समझ नहीं आता कि लिफ्ट-जेनसन पर्याप्त काम कैसे करता है।

उत्तर:

उत्तर № 1 के लिए 1

मुझे कुछ याद आ रहा है, लेकिन मुझे लगता है कि यह मुद्दा टाइप इरेज़र है; रनटाइम के बीच, वहाँ कोई अंतर नहीं है HashMap[Coord, Unite] तथा HashMap[String, Unite], जो अंतहीन पुनरावृत्ति की व्याख्या कर सकता है।