2012-04-04 15 views
5

मैं दोनों के लिए नया हूँ! & स्कैला, लेकिन मैं एक ऐसी सेवा बनाने की कोशिश कर रहा हूं जो JSON अनुरोध को मानचित्र [स्ट्रिंग, जेएसओब्जेक्ट] (या मानचित्र [स्ट्रिंग, जेएसवेल्यू] पर मैप करेगा, मुझे भेद के बारे में निश्चित नहीं है), और उसके बाद सूची को आउटपुट करें नक्शा के माध्यम से कुर्सियों की बार-बार (अधिमानतः एक पेड़ के रूप में)।प्ले 2.0 के साथ JSON [स्ट्रिंग, जेएसओब्जेक्ट] मानचित्र पर?

लेकिन मैं हो रही शुरू मुद्दों:

def genericJSONResponse = Action(parse.json) { 
    request => request.body 
    var keys = request.keys 
    Ok("OK") 
} 

मैं यहाँ क्या उम्मीद करेंगे था के लिए चाबी अनुरोध से कुंजी के साथ भरे जाने के लिए है, लेकिन निश्चित रूप से, यह संकलन नहीं है। ऊपर दिए गए विवरण को देखते हुए, मुझे इसका कैसे संपर्क करना चाहिए? एक स्काला noob :-)

Nik

+0

क्या आपने इस विकी के माध्यम से पढ़ा है? https://github.com/playframework/Play20/wiki/ScalaJsonRequests आपको किसी ऑब्जेक्ट पर मैप करने के लिए मैन्युअल रूप से चाबियाँ मैप करना होगा या किसी अंतर्निहित ऑब्जेक्ट का उपयोग करना होगा। https://github.com/playframework/Play20/wiki/ScalaJsonGenerics –

उत्तर

14

JsValue सभी JSON मूल्यों के लिए आधार वर्ग है की मदद के लिए अग्रिम में

धन्यवाद। JsObjectJsValue (JsNull, JsUndefined, JsBoolean, JsNumber, JsString, और JsArray) के साथ उपप्रकार है। JSON कल्पना पर एक नजर डालें, तो यह स्पष्ट नहीं है: http://json.org/

आप जानते हैं कि शरीर अनुरोध में JSON एक JSON ऑब्जेक्ट (जैसा कि ऊपर सूचीबद्ध अन्य प्रकार के खिलाफ) आप इसे पैटर्न मिलान कर सकते हैं यह है:

def genericJSONResponse = Action(parse.json) { request => 
    request.body match { 
    case JsObject(fields) => Ok("received object:" + fields.toMap + '\n') 
    case _ => Ok("received something else: " + request.body + '\n') 
    } 
} 

fields.toMap वह प्रकार है जिस प्रकार आप चाहते थे: Map[(String, JsValue)] ताकि आप map या collect का उपयोग ऑब्जेक्ट की कुंजियों को दोबारा संसाधित करने के लिए कर सकें। (वैसे, आप सीधे fields का उपयोग कर सकते हैं, क्योंकि यह Seq[(String, JsValue)] है और map और collect का भी समर्थन करता है)।

+1

धन्यवाद, यह खूबसूरती से काम करता है। :-) – niklassaers

+0

@niklassaers मुझे खुशी है कि आपको यह पसंद है। – romusz

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