5

मैं प्ले 2.3 में निम्नलिखित JSON पाठक:प्ले Json पढ़ता है और स्ट्रिंग

import play.api.libs.json._ 
import play.api.libs.json.Reads._ 
val airportSearchReads: Reads[String] = (JsPath \ "search").read[String](minLength(3)) 

और अगर मैं का उपयोग एक implicit val मैं

ambiguous implicit values: 
both value uuidReads in trait DefaultReads of type => play.api.libs.json.Reads[java.util.UUID] 
and value airportSearchReads in object AirportSearch of type => play.api.libs.json.Reads[String] 
match expected type play.api.libs.json.Reads[M] 
मिल संकलक मुझे त्रुटि

diverging implicit expansion for type play.api.libs.json.Reads[M] 
starting with method ArrayReads in trait DefaultReads 

देता है

मैं इसे काम करने के लिए कैसे प्राप्त करूं?

उत्तर

5

मुझे कोई दूसरी त्रुटि मिलता है, लेकिन यह मेरे लिए ठीक काम करता है अगर मैं minLength करने के लिए एक स्पष्ट प्रकार पैरामीटर जोड़ें:

scala> val airportSearchReads: Reads[String] = (JsPath \ "search").read[String](minLength[String](3)) 
airportSearchReads: play.api.libs.json.Reads[String] = [email protected] 

मुझे लगता है कि ऊपर छोड़ने संकलक के साथ समस्या यह है विभिन्न संयोजनों देखते हैं कि है दायरे में निहितार्थ जो minLength की अंतर्निहित पैरामीटर सूची को पूरा करेगा।

0

DefaultReads पाठकों आप आम प्रकार (String, Option, Array, आदि) के लिए json मान बदलने के लिए की जरूरत है प्रदान करता है। तो String के लिए नए पाठक उपलब्ध कराने की आवश्यकता नहीं है।

इसलिए, अपने जेसन ऑब्जेक्ट में किसी फ़ील्ड तक पहुंचने के लिए आपको एक पाठक को परिभाषित करने की आवश्यकता नहीं है, जब तक कि आप उस क्षेत्र को मनमाने तरीके से पढ़ना नहीं चाहते।

आपको इस मामले में सभी की आवश्यकता है जो Reads और Constraints दोनों में परिभाषित है। तो यह सोचते हैं कि आपके json वस्तु निम्नलिखित कोड आप देता है jsValue आप क्या चाहते हैं:

// val jsValue = ... 

(jsValue \ "search").as[String](Reads.minLength(3)) 
+0

यह मेरे लिए एक ही त्रुटि देता है दुर्भाग्य से – elmalto

+0

अपने अपने निहित पाठक हटा दिया है? (बस 'वैल एयरपोर्टशर्च रीड: हटाएं [स्ट्रिंग] = (जेएसपीएथ \ "सर्च") पढ़ें। [स्ट्रिंग] (मिनी लम्बाई (3)' पहले) पढ़ें। –

+0

अभी भी वही समस्या है ... हालांकि शीर्ष कार्यों पर समाधान, इसलिए मैं इसका इस्तेमाल करें। आपकी मदद के लिए बहुत बहुत धन्यवाद – elmalto

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