2015-06-17 6 views
10

में JSON स्ट्रिंग को JSON स्ट्रिंग में कनवर्ट करना मैं एक साधारण JSON स्ट्रिंग जैसे {"Name":"abc", "age":10} को संबंधित JSON ऑब्जेक्ट (कस्टम स्कैला ऑब्जेक्ट जैसे "व्यक्ति") में कनवर्ट करना चाहता हूं। क्या स्काला स्ट्रिंग को किसी JSON ऑब्जेक्ट में कनवर्ट करने के लिए किसी भी अंतर्निर्मित विधियों का समर्थन करता है?स्केल

मुझे कोई जटिल JSON संचालन नहीं होने वाला है। मुझे बस स्ट्रिंग को JSON ऑब्जेक्ट में कनवर्ट करने की आवश्यकता है। ऐसा करने का सबसे आसान तरीका क्या है? मैं स्कैला के लिए नया हूं, इसलिए अगर मैं यह सवाल बहुत बुनियादी लगता हूं तो मैं क्षमा चाहता हूं।

धन्यवाद।

+0

स्काला में कई JSON lib रहे हैं है। उनमें से प्रत्येक एक स्ट्रिंग से JSON मान प्राप्त करने के लिए एक पार्स फ़ंक्शन प्रदान करता है। आपको सबसे पहले एक lib चुनना होगा (जेएसओएन, Argonaut, ... प्ले)। – cchantep

+0

@cchantep Thx, लेकिन यदि संभव हो तो मैं बाहरी पुस्तकालय का उपयोग करने से बचना चाहता था। यही कारण है कि मैं जानना चाहता था कि स्कैला में कुछ अंतर्निहित समर्थन है या नहीं। मान लीजिए मुझे बस एक लाइब्रेरी का उपयोग करना होगा। – drunkenfist

उत्तर

5

आप Spray JSON जैसी लाइब्रेरी का उपयोग करना चाह सकते हैं। यह JSON से और उसके लिए कनवर्ट करने के लिए कार्यक्षमता का उपयोग करने में बहुत आसान बनाता है। आप स्प्रे JSON का उपयोग करने का निर्णय लेते हैं तो आप ऐसा कर सकते हैं:

import spray.json._ 
// some code here 
val json = "your json string here".parseJson 
3

इसके अलावा, आप play framework से Json लाइब्रेरी का उपयोग कर सकते हैं, लेकिन यह भी स्टैंडअलोन lib रूप में इस्तेमाल किया जा सकता है। यह लाइब्रेरी अच्छी लेकिन छोड़ी गई Jerkson प्रोजेक्ट पर आधारित है, जो सुपर-फास्ट जावा आधारित JSON लाइब्रेरी, जैक्सन के आसपास एक स्कैला रैपर है। transofrmers, प्रमाणकों और आदि

import play.api.libs.json._ 

val json: JsValue = Json.parse("""{"a":1}""") 

खेलने के बिना इस lib उपयोग करने के लिए सिर्फ स्ट्रिंग

libraryDependencies += "com.typesafe.play" %% "play-json" % "2.3.0" 
11

के बाद से साथ build.sbt में इसे स्थापित - और यह JSON के साथ काम करने के लिए बहुत अमीर और अच्छा दस्तावेज टूलसेट है आपने विशेष रूप से जेएसओएन पार्सिंग के लिए स्कैला की मूल सुविधाओं के बारे में पूछा - जिस पैकेज को आप ढूंढ रहे हैं वह scala.utils.parsing.json है। निम्नलिखित की तरह कुछ काम करना चाहिए:

import scala.util.parsing.json._ 

val parsed = JSON.parseFull("""{"Name":"abc", "age":10}""") 

parsed मूल्य पर ले जाएगा: Some(Map(Name -> abc, age -> 10.0))


नोट: पार्सर Combinator पुस्तकालय नहीं रह गया है कोर भाषा में शामिल है स्काला 2.11 के रूप में जार और आपकी परियोजना में अलग से जोड़ा जाना चाहिए। आप अपने build.sbt को निम्नलिखित जोड़कर अपनी परियोजना में जोड़ सकते हैं:

libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4"

आप https://github.com/scala/scala-parser-combinators पर पुस्तकालय के लिए स्रोत कोड प्राप्त कर सकते हैं।


जैसा कि कई अन्य ने ध्यान दिया है, बाहरी पुस्तकालय हैं जो आमतौर पर स्कैला के मूल के मुकाबले बेहतर होते हैं। व्यक्तिगत रूप से, मैं प्ले जेएसओएन का उपयोग करता हूं।

1

Some(JSONObject)

import scala.util.parsing.json._ 

val parsed = JSON.parseRaw("""{"Name":"abc", "age":10}""").getOrElse(yourDefault) 

parsed के मामले में parseFull रिटर्न में मामले Some(Map), parseRaw रिटर्न के JSONObject