2016-06-17 20 views
5

मैं JSON के रूप में सामान भेजने से पहले मामले ऊंट साँप मामले से अमृत में नक्शे की चाबी को बदलना चाहते हैं के रूप में सामान भेजने से पहले अमृत में CamelCase बंद नक्शा, फोनिक्स को बंद नक्शा snake_case। मैं उसे कैसे कर सकता हूँ? क्या यह केवल एक ऐसा कार्य होना चाहिए जिसमें मैं हर प्रतिक्रिया को लपेटूंगा या इसे कुछ निचले स्तर पर किया जाना चाहिए, यानी जहर में?परिवर्तित JSON

धन्यवाद

उत्तर

14

कई पता नहीं है कि यह निर्मित में अमृत है:

iex> Macro.underscore "SAPExample" 
"sap_example" 

iex> Macro.camelize "sap_example" 
"SapExample" 

iex> Macro.camelize "hello_10" 
"Hello10" 

देखें डॉक्स: http://elixir-lang.org/docs/stable/elixir/Macro.html#underscore/1

कार्यान्वयन: https://github.com/elixir-lang/elixir/blob/master/lib/elixir/lib/macro.ex#L1192

+0

चीयर्स! मैंने सोचा कि यह भाषा में होना चाहिए, बस मैक्रो मॉड्यूल में होने की उम्मीद नहीं थी :) – Nomad

+3

Thats क्योंकि इसे सामान्य पुस्तकालयों से उपयोग नहीं किया जाना चाहिए। 'तारों को कम करने के लिए इसे सामान्य तंत्र के रूप में उपयोग न करें क्योंकि यह यूनिकोड या वर्णों का समर्थन नहीं करता है जो एलिक्सीर पहचानकर्ताओं में मान्य नहीं हैं।' – Mattias

1

एक Macro.underscore/1 का उपयोग कर सकते हैं, लेकिन वह यह करने के लिए सही तरीका नहीं है। Macro मॉड्यूल ही states के बाद से:

इस समारोह भाषा पहचानकर्ता/टोकन को रेखांकित करने के लिए बनाया गया था, इसलिए यह Macro मॉड्यूल के अंतर्गत आता है। तार यह यूनिकोड या अक्षर हैं जो अमृत पहचानकर्ता में मान्य नहीं हैं का समर्थन नहीं करता के रूप में रेखांकित के लिए एक सामान्य तंत्र के रूप में यह प्रयोग न करें।

तो, कुछ अन्य पुस्तकालय का उपयोग करना बेहतर है। मैं recase का उपयोग करने की सलाह दूंगा। यह स्ट्रिंग को किसी भी मामले में परिवर्तित कर सकता है, न केवल camelCase

चूंकि यह आप इसे स्थापित करने की जरूरत है एक तीसरी पार्टी पुस्तकालय है।

  1. deps में mix.exs को यह पंक्ति जोड़ें: {:recase, "~> 0.1"}
  2. रन mix deps.get

है कि कैसे आप इसे उपयोग:

Recase.to_camel("some-value") 
# => "someValue" 

Recase.to_camel("Some Value") 
# => "someValue" 

आपको यहां मिलेगा डॉक्स: https://hexdocs.pm/recase/readme.html

और यहाँ रेपो: https://github.com/sobolevn/recase

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