জাভাস্ক্রিপ্ট ব্যবহার করে নতুন লাইনের অক্ষর যুক্ত JSON স্ট্রিং থেকে কীভাবে পালানো যায়?


166

আমাকে একটি জেএসএন স্ট্রিং তৈরি করতে হবে যাতে মানটিতে নতুন রেখার অক্ষর থাকে। এটি থেকে পালাতে হবে এবং তারপরে এজেএক্স কল ব্যবহার করে পোস্ট করতে হবে। জাভা স্ক্রিপ্টের সাহায্যে স্ট্রিং থেকে বাঁচার জন্য যে কেউ কোনও উপায় প্রস্তাব করতে পারে? আমি jQuery ব্যবহার করছি না।


1
আমি নতুন রেখার অক্ষর \ n থেকে \\ n এড়িয়ে যাওয়ার চেষ্টা করেছি। এটা ঠিক কাজ করছে। তবে আমি কোনও জেএস লাইব্রেরির সন্ধান করছি যা সমস্ত পালানোর অক্ষরের জন্য এটি করতে পারে।
শ্রীকান্ত

1
জেএসএনের মধ্যে নতুন লাইনের হাত থেকে বাঁচার দরকার কেন? এই মানগুলি ব্যবহার করার পরে কীভাবে ডিকোড হচ্ছে, কারণ সম্পর্কিত সমাধানটি সম্পর্কিত এনকোডিং ফাংশনটি ব্যবহার করা।
zzzzBov

আমি 6 ঘন্টার জন্য বিভিন্ন ধরণের বিভিন্ন প্রকারের চেষ্টা করে কেবলমাত্র একটি ক্ষুদ্র অতিরিক্ত স্ল্যাশ আবিষ্কার করতে এটি সমস্ত কাজকে যাদুর মতো করে তোলে যা আমার মনে হয়েছিল যে জিনিসগুলি কঠোরভাবে গ্রহণ করা হয়েছিল 5 মিনিটের মতো ... আমি যে জিনিসটি দিয়েছি তা দেওয়া অসম্ভব হয়ে পড়েছিল। .omg
মুহাম্মদ উমার

1
আপনি যখন সার্ভার-সাইড পিএইচপি-ডিবি-সেভিংয়ের সাথে অ্যাজাক্স-কলগুলি ব্যবহার করেন, কেবল রূপান্তর করতে পিএইচপি-ফাংশন অ্যাডল্যাশগুলি () ব্যবহার করুন। এই সমাধানের সাথে আপনার জাভাস্ক্রিপ্ট-রিপ্লেস লাইনগুলির তুলনায় রূপান্তর করার জন্য কেবলমাত্র একটি জায়গা এবং এর ক্লিনার রয়েছে।
মার্সেল এনিক্স

প্রাসঙ্গিক উত্তর এবং সমাধান দেখুন http://stackoverflow.com/questions/30366324/unescape-sp
خصوصی-characters

উত্তর:


134

আপনার JSON এবং .stringify()এটি নিন । তারপরে .replace()পদ্ধতিটি ব্যবহার করুন এবং এর \nসাথে সমস্ত উপস্থিতি প্রতিস্থাপন করুন \\n

সম্পাদনা করুন:

আমি যতদূর জানি, একটি স্ট্রিংয়ে সমস্ত বিশেষ অক্ষর থেকে বাঁচার জন্য কোনও সুপরিচিত জেএস লাইব্রেরি নেই। তবে, আপনি এই .replace()পদ্ধতিটিকে শৃঙ্খলাবদ্ধ করতে এবং বিশেষ চরিত্রগুলির মতো এটি প্রতিস্থাপন করতে পারেন:

var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.replace(/\\n/g, "\\n")
                                      .replace(/\\'/g, "\\'")
                                      .replace(/\\"/g, '\\"')
                                      .replace(/\\&/g, "\\&")
                                      .replace(/\\r/g, "\\r")
                                      .replace(/\\t/g, "\\t")
                                      .replace(/\\b/g, "\\b")
                                      .replace(/\\f/g, "\\f");
// myEscapedJSONString is now ready to be POST'ed to the server. 

তবে এটি বেশ বাজে, তাই না? ফাংশনগুলির সৌন্দর্য লিখুন যাতে তারা আপনাকে কোডটি টুকরো টুকরো করতে দেয় এবং আপনার স্ক্রিপ্টের মূল প্রবাহকে পরিষ্কার রাখতে এবং 8 টি চেইনড .replace()কল থেকে মুক্ত রাখতে দেয় । সুতরাং আসুন যে কার্যকারিতা ডাকা একটি ফাংশন escapeSpecialChars(),। এর এগিয়ে যান এবং এটি সংযুক্ত করা যাক prototype chainএর Stringঅবজেক্ট, তাই আমরা কল করতে পারেন escapeSpecialChars()সরাসরি স্ট্রিং বস্তুর উপর।

তাই ভালো:

String.prototype.escapeSpecialChars = function() {
    return this.replace(/\\n/g, "\\n")
               .replace(/\\'/g, "\\'")
               .replace(/\\"/g, '\\"')
               .replace(/\\&/g, "\\&")
               .replace(/\\r/g, "\\r")
               .replace(/\\t/g, "\\t")
               .replace(/\\b/g, "\\b")
               .replace(/\\f/g, "\\f");
};

একবার আমরা সেই ফাংশনটি সংজ্ঞায়িত করার পরে, আমাদের কোডের মূল অংশটি এটির মতো সহজ:

var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.escapeSpecialChars();
// myEscapedJSONString is now ready to be POST'ed to the server

3
ধন্যবাদ অ্যালেক্স সমস্ত পালানোর চরিত্রের জন্য আমাকে এই কাজটি করতে হবে? এটি করার জন্য কোনও জেএস লাইব্রেরি নেই?
শ্রীকান্ত

2
এটি হ'ল সঠিক ফাংশন যা আমার সমস্যার সমাধান করেছে স্ট্রিং.প্রোটোটাইপ.সেস্কেপ স্পেশালচার্স = ফাংশন () this রিটার্ন এই.রেপ্লেস (/ \\ / জি, "\\\\")। (/ \ n / g, "\\ n") প্রতিস্থাপন করুন। (/ \ r / g, "\\ r") প্রতিস্থাপন করুন। প্রতিস্থাপন (/ \ t / g, "\\ t")। প্রতিস্থাপন করুন (/ \ f / g, "\\ f")। (/ "/ ছ," \\\ "") প্রতিস্থাপন করুন। প্রতিস্থাপন (/ '/ ছ, "\\\'")। (/ \ & / g, "\\ &") প্রতিস্থাপন করুন; }
শ্রীকান্ত

10
ব্যবহারকারী 667073 এর উত্তরে উল্লিখিত হিসাবে, এই সমাধানটিতে কয়েকটি ত্রুটি রয়েছে। Json.org দেখুন - এবং এবং 'এড়ানো উচিত নয়
আলেকজান্ডার ক্লিমেটসেক

5
নিয়মিত প্রকাশগুলি ভুল বলে মনে হচ্ছে বলেই আমাকে এটিকে ভোট দিতে হয়েছিল। আমি এটি ব্যবহার করার চেষ্টা করেছি, তবে একটি স্ল্যাশ মুছে ফেলার মধ্য দিয়ে নিয়মিত প্রকাশগুলি ঠিক করতে হয়েছিল, উদাহরণস্বরূপ: / \\ n / g হওয়া উচিত / \ n / g। বিশদগুলির
b01

1
নিজেই কি? তাও কি পালাতে হবে?
আরশ মোয়েন

65

ব্যবহারকারী 707370০73৩ অনুসারে প্রথমে ব্যাকস্ল্যাশ প্রতিস্থাপনটি পুনরায় অর্ডার করা, এবং উদ্ধৃতি প্রতিস্থাপন ঠিক করা ব্যতীত প্রস্তাবিত

escape = function (str) {
  return str
    .replace(/[\\]/g, '\\\\')
    .replace(/[\"]/g, '\\\"')
    .replace(/[\/]/g, '\\/')
    .replace(/[\b]/g, '\\b')
    .replace(/[\f]/g, '\\f')
    .replace(/[\n]/g, '\\n')
    .replace(/[\r]/g, '\\r')
    .replace(/[\t]/g, '\\t');
};

3
আপনাকে এই সমস্ত কিছুই করতে হবে না। কেবল ব্যাকস্ল্যাশ, নিউলাইন, লাইনফিড এবং দুটি উদ্ধৃতি। এবং এটি অনুপস্থিত: একক উক্তি, Line separator \u2028এবং Paragraph separator \u2029। সূত্র: es5.github.io/#x7.3
এরিয়েল

1
ভাল, তবে বর্গাকার বন্ধনীগুলি প্রয়োজনীয় এবং কেন নয়: পলায়ন = ফাংশন (স্ট্র) {রিটার্ন str .replace (/ \\ / g, '\\\\') .রেপ্লেস (/ \ "/ জি, '\\\ "') .পরিচালনা (/ \ // জি,' \\ / ')। স্থান (/ \ বি / জি,' \\ বি ')। স্থান (/ place চ / জি,' \\ চ ')। স্থান (/ \ n / g, '\\ n')। স্থান (/ \ আর / জি, '\\ আর') re স্থান (/ \ টি / জি, '\\ t'); };
জোহান এছাওয়ারিয়া

3
নিখুঁত। গৃহীত উত্তর (এটির উপরে) কেবল কার্যকর হয় না। নোডজেএস ব্যবহার করে।
ইয়োসি শাশো

: আমি এই ভুল পানUncaught SyntaxError: Unexpected token \ in JSON at position 2
Pathros

31

আপনার মত আমিও আমার জেএসওএন-তে এইচটিএমএল অবজেক্টের মধ্যে বিশেষ পালনের অক্ষরগুলি প্রতিস্থাপন করতে বেশ কয়েকটি মন্তব্য এবং পোস্ট পোস্ট করেছি।

আমার অবজেক্টটি হল JSON অবজেক্টের বিশেষ অক্ষরগুলি সরিয়ে ফেলা এবং জেএসন অবজেক্টের অভ্যন্তরে থাকা এইচটিএমএল রেন্ডার করা।

আমি এখানে যা করেছি এবং এটি ব্যবহার করা খুব সহজ আশা করি।

প্রথমে আমি JSON.stringify আমার json অবজেক্ট এবং JSON.parse ফলাফল।

যেমন:

JSON.parse(JSON.stringify(jsonObject));

এবং এটি আমার সমস্যা সমাধান করে এবং বিশুদ্ধ জাভাস্ক্রিপ্ট ব্যবহার করে সম্পন্ন করে।


4
এটি অবশ্যই যাওয়ার উপায়
ওজ লোড্রিগেজ

1
এই হ 'ল যেতে হয়!
মার্চিয়ান ই

1
এটি অবশ্যই জটিল এবং বৃহত অবজেক্টগুলির সাথে stackoverflowত্রুটি সহ ভেঙে যাবে
এএএ

1
JSON.parse(JSON.stringify($("body")))বডি এবং কয়েকটি টেবিল সহ এইচটিএমএল ফাইলে চেষ্টা করুন । "(" বডি ") একটি জাভাস্ক্রিপ্ট অবজেক্ট তবে স্ট্রিংফাইটি এটি পার্স করতে ব্যর্থ হবে।
এএএ

আমি আপনার জিজ্ঞাসা পরীক্ষা করে আবার ফিরিয়ে দেব।
বালাসুব্রামণি এম

24

অ্যালেক্সের দেওয়া উত্তরটি বরং ভুল বলে, এটিকে হালকাভাবে বলতে আমি ভয় পাচ্ছি:

  • কিছু অক্ষর অ্যালেক্সের পালানোর চেষ্টা করে মোটেও পালানোর প্রয়োজন হয় না (যেমন & এবং ');
  • \ b সমস্ত ব্যাকস্পেস অক্ষর নয় বরং একটি শব্দের সীমানা ম্যাচ
  • পালানোর জন্য প্রয়োজনীয় চরিত্রগুলি পরিচালনা করা হয় না।

এই ফাংশন

escape = function (str) {
    // TODO: escape %x75 4HEXDIG ?? chars
    return str
      .replace(/[\"]/g, '\\"')
      .replace(/[\\]/g, '\\\\')
      .replace(/[\/]/g, '\\/')
      .replace(/[\b]/g, '\\b')
      .replace(/[\f]/g, '\\f')
      .replace(/[\n]/g, '\\n')
      .replace(/[\r]/g, '\\r')
      .replace(/[\t]/g, '\\t')
    ; };

এটি আরও ভাল অনুমান হিসাবে উপস্থিত বলে মনে হচ্ছে।


5
আসলে আপনার ডাবল উক্তিগুলির পূর্বে ব্যাকস্ল্যাশগুলি প্রতিস্থাপনের ক্রমটি পরিবর্তন করা উচিত, অন্যথায় আপনি with "দিয়ে শেষ করবেন Also এছাড়াও কোট লাইনটি অবশ্যই স্থানটি (/ [\"] / জি হতে হবে, '\\\ "')
রায়ান

10

একক উদ্ধৃতিগুলির জন্য একটি ছোট আপডেট

function escape (key, val) {
    if (typeof(val)!="string") return val;
    return val      
        .replace(/[\\]/g, '\\\\')
        .replace(/[\/]/g, '\\/')
        .replace(/[\b]/g, '\\b')
        .replace(/[\f]/g, '\\f')
        .replace(/[\n]/g, '\\n')
        .replace(/[\r]/g, '\\r')
        .replace(/[\t]/g, '\\t')
        .replace(/[\"]/g, '\\"')
        .replace(/\\'/g, "\\'"); 
}

var myJSONString = JSON.stringify(myJSON,escape);

7

এটি একটি পুরানো পোস্ট। তবে এটি এখনও কৌণিক.ফর্মজেসন এবং জেএসওএন.স্ট্রিংফাই ব্যবহারকারীদের জন্য সহায়ক হতে পারে। পলায়ন () অবচিত হয়। পরিবর্তে এটি ব্যবহার করুন,

var uri_enc = encodeURIComponent(uri); //before you post the contents
var uri_dec = decodeURIComponent(uri_enc); //before you display/use the contents.

রেফ http://www.w3schools.com/jsref/jsref_decodeuricomp घटक. asp


স্ট্রিংফাই ইতিমধ্যে আপনার জন্য সমস্ত পালাতে পারে - আমি আগ্রহী কেন কেবল এটি ব্যবহার করি না? git.io/vglq7
বেন ডেভিস

5

JSON.stringify এ দ্বিতীয় প্যারামিটারও রয়েছে। সুতরাং, আরও মার্জিত সমাধানটি হ'ল:

function escape (key, val) {
    if (typeof(val)!="string") return val;
    return val
      .replace(/[\"]/g, '\\"')
      .replace(/[\\]/g, '\\\\')
      .replace(/[\/]/g, '\\/')
      .replace(/[\b]/g, '\\b')
      .replace(/[\f]/g, '\\f')
      .replace(/[\n]/g, '\\n')
      .replace(/[\r]/g, '\\r')
      .replace(/[\t]/g, '\\t')
    ; 
}

var myJSONString = JSON.stringify(myJSON,escape);

5

এটি একটি পুরানো প্রশ্ন তবে সমাধানটি আমার পক্ষে কার্যকর হয়নি কারণ এটি সমস্ত ক্ষেত্রে সমাধান করে না। আমি অবশেষে একটি উত্তর পেয়েছি যা এখানে কাজ করেছে

আমি পালাবার এবং ইউরি উপাদানটি এনকোড ব্যবহার করে উভয়ের আমার সম্মিলিত সমাধান পোস্ট করব:

// implement JSON stringify serialization
JSON.stringify = JSON.stringify || function (obj) {
    var t = typeof (obj);
    if (t != "object" || obj === null) {
        // simple data type
        if (t == "string") obj = '"'+obj+'"';
        return String(obj);
    }
    else {
        // recurse array or object
        var n, v, json = [], arr = (obj && obj.constructor == Array);
        for (n in obj) {
            v = obj[n]; t = typeof(v);
            if (t == "string") v = '"'+v+'"';
            else if (t == "object" && v !== null) v = JSON.stringify(v);
            json.push((arr ? "" : '"' + n + '":') + String(v));
        }
        var rawString = (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
       return rawString;
    }
};
function escape (key, val) {
    if (typeof(val)!="string") return val;

    var replaced = encodeURIComponent(val);
    return replaced;
}

JSON.stringifyEscaped = function(obj){
    return JSON.stringify(obj,escape);
}

সম্ভবত স্ট্রিং এর পরেও ডাবল উক্তিগুলি সরিয়ে ফেলবেন? escape = (string) -> JSON.stringify(string)[1...-1]
Radek


3

ব্যবহারের json_encode () আপনার সার্ভারে সাইড স্ক্রিপ্টিং ল্যাঙ, পিএইচপি হলে json_encode()সম্পর্কে newline & আপনার জন্য অন্যান্য অপ্রত্যাশিত টোকেন পালাতে (আপনার স্ক্রিপ্টিং ভাষা জন্য অনুরূপ ফাংশন জন্য পিএইচপি বর্ণন ব্যবহার করছেন না হলে)

তারপরে $.parseJSON()আপনার জাভাস্ক্রিপ্ট ব্যবহার করুন !


যদি পিএইচপি থেকে জাভাস্ক্রিপ্টে JSON স্ট্রিং হিসাবে ডেটা পাঠানো হয় তবে এই উত্তরটি পরীক্ষা করুন - ডাবল পলায়ন, আমাকে JSON.parse পাস করতে এবং json স্ট্রিংকে অবজেক্টে রূপান্তর করতে সহায়তা করেছে। <script> windows.data_from_php = <?php echo json_encode(json_encode($arrayOrObjToJs)); ?>; var phpData = JSON.parse(windows.data_from_php); </script> php JSON.parse ডাবল এনকোড
ভ্লাদিমির Vukanac

2

আমার এক আজাক্স JSONকলটিতে আমি একই অবস্থা পেয়েছি, যেখানে টেক্সারিয়া ক্ষেত্রে নতুন লাইনের কারণে একটি ত্রুটি ছুঁড়েছিল। এখানে প্রদত্ত সমাধানটি আমার পক্ষে কার্যকর হয়নি। সুতরাং আমি জাভাস্ক্রিপ্ট এর .escapeফাংশন ব্যবহার করেছি এবং এটি দুর্দান্ত কাজ করেছে। তারপরে মানটি পুনরুদ্ধার করতে JSON, আমি কেবল ব্যবহার করে অনস্কেপ করেছি .unescape


অ্যাজাক্স কলগুলি ব্যবহার করে, আমি পিএইচপি ফাংশন newStr = অ্যাডল্যাশ (স্ট্র) ব্যবহার করতে পছন্দ করি, তারপরে ডিবিতে সংরক্ষণ করুন। সুতরাং আমি জাভাস্ক্রিপ্ট- (ক্লায়েন্ট) -পাশে রূপান্তর করতে হবে না। এই সমাধানের সাহায্যে স্ল্যাশগুলি রূপান্তর করতে আপনার কেবলমাত্র একটি জায়গা প্রয়োজন। আমি এই সমাধান খুব খুশি।
মার্সেল এনিক্স

2

ইনপুটটি ইউলিনকোড করার জন্য আমি টেক্সারিয়া থেকে মানটি বের করতে jQuery.serialize () এ অন্তর্নির্মিতটি ব্যবহার করেছি । প্রো অংশটি হ'ল আপনাকে নিজের প্রতিটি বিশেষ চরটি প্রতিস্থাপন করতে হবে না এবং আমি নতুন লাইনগুলিও রেখেছি এবং এইচটিএমএল এড়িয়ে চলেছি। সিরিয়ালাইজ কাজ করার জন্য মনে হয় ইনপুট ফিল্ডটির একটি নাম অ্যাট্রিবিউট থাকা দরকার এবং এটি পালানো স্ট্রিংয়ের সাথে একই বৈশিষ্ট্য যুক্ত করে যা প্রতিস্থাপন করা দরকার needs আপনি যা খুঁজছেন তা হতে পারে না তবে এটি আমার পক্ষে কাজ করে।

var myinputfield = jQuery("#myinputfield"); 
var text = myinputfield.serialize();
text = text.replace(myinputfield.attr('name') + '=','');

1

আজাক্সের যে কোনও ফর্ম ব্যবহার করার সময়, সিজিআই সার্ভার থেকে প্রাপ্ত প্রতিক্রিয়াগুলির ফর্ম্যাটটির জন্য বিশদ ডকুমেন্টেশনগুলি ওয়েবে অনুপস্থিত বলে মনে হচ্ছে। কিছু এন্ট্রি এখানে উল্লেখ করেছে যে ফেরত পাঠ্য বা জসন ডেটাতে থাকা নিউজলাইনগুলি JSON রূপান্তর (সম্ভবত একটি অপ্রকাশিত ব্যতিক্রম ছড়িয়ে দিয়ে তৈরি করা হয়েছে) অসীম লুপগুলি (হ্যাং) রোধ করতে অবশ্যই পালাতে হবে, জাভাস্ক্রিপ্ট সিস্টেম বা লাইব্রেরি জেএসএন পার্সিং নিজেই ব্যবহার করা হোক না কেন কল।

প্রতিটি ক্ষেত্রে যেখানে প্রোগ্রামাররা এই সমস্যাটি পোস্ট করে সেখানে অপর্যাপ্ত সমাধানগুলি উপস্থাপন করা হয় (প্রায়শই প্রেরণের দিকে \ n দ্বারা by n প্রতিস্থাপন করা হয়) এবং বিষয়টি বাদ দেওয়া হয়। স্ট্রিংয়ের মানগুলি পাস করার সময় তাদের অপ্রতুলতা প্রকাশিত হয় যা উইন্ডোজ পথের নামগুলির মতো ঘটনাক্রমে নিয়ন্ত্রণের অব্যাহত সিকোয়েন্স এম্বেড করে। একটি উদাহরণ "সি: \ ক্রিস \ রবার্টস.এফপি", যা নিয়ন্ত্রণ অক্ষর ^ c এবং ^ r ধারণ করে, যা স্ট্রিং string "ফাইল" এর JSON রূপান্তর ঘটায়: "C: \ Chris \ Roberts.php" ph চিরকালের জন্য লুপ। এই জাতীয় মান উত্পন্ন করার একটি উপায় হ'ল পিএইচপি সতর্কতা এবং সার্ভার থেকে ক্লায়েন্টের কাছে ত্রুটি বার্তাগুলি প্রেরণের চেষ্টা করা একটি যুক্তিসঙ্গত ধারণা।

সংজ্ঞা অনুসারে, Ajax পর্দার পিছনে HTTP সংযোগগুলি ব্যবহার করে। এই জাতীয় সংযোগগুলি জিইটি এবং পোষ্ট ব্যবহার করে ডেটা পাস করে, উভয়ই নিয়ন্ত্রণ অক্ষর সহ ভুল সিনট্যাক্স এড়ানোর জন্য এনকোডিং প্রেরিত ডেটা প্রয়োজন।

এটি সমাধান বলে মনে হচ্ছে এটি নির্মাণে যথেষ্ট ইঙ্গিত দেয় (এটি আরও পরীক্ষার প্রয়োজন): ডেটা এনকোড করার জন্য পিএইচপি (প্রেরণ) সাইডে কাঁচাল্লেকোড ব্যবহার করা এবং জাভাস্ক্রিপ্ট (প্রাপ্তি) উপাত্তকে ডিকোড করার জন্য অনস্কেপ ব্যবহার করা। কিছু ক্ষেত্রে, আপনি এগুলি পুরো পাঠ্যের স্ট্রিংগুলিতে প্রয়োগ করবেন, অন্যান্য ক্ষেত্রে আপনি এগুলি কেবল JSON এর মধ্যে থাকা মানগুলিতে প্রয়োগ করবেন।

যদি এই ধারণাটি সঠিক হিসাবে প্রমাণিত হয়, তবে সমস্ত স্তরের প্রোগ্রামারদের একবার এবং সর্বোপরি এই সমস্যার সমাধানের জন্য সহজ উদাহরণগুলি তৈরি করা যেতে পারে।


0

দেখে মনে হচ্ছে এটি সত্যিই একটি প্রাচীন পোস্ট :-) তবে বলছি, আমার কাছে এটির সেরা কাজটি 100% হতে হবে যে এটি জটিল কোড ছাড়াই কাজ করে, তা হ'ল বেস 64 এ এনকোডিং / ডিকোডিংয়ের উভয় ফাংশন ব্যবহার করা। এগুলি হ'ল atob () এবং btoa ()। এখন পর্যন্ত সবচেয়ে সহজ এবং সর্বোত্তম উপায়ে, আপনি পালানোর জন্য কোনও চরিত্র মিস করেছেন কিনা তা চিন্তা করার দরকার নেই।

জর্জ


যেহেতু আমি একই সমাধান নিয়ে এসেছি। আমি ভাবছি যে কেউ যদি এই সমাধানটি পরিষ্কার করতে পারে এবং সেখানে কিছু লুকানো সতর্কতা রয়েছে। ধন্যবাদ।
মহীশ

0

যদি আপনার গুগলস আপনাকে এখানে অবতরণ করতে থাকে এবং আপনার JSON ডাবল কোটগুলি ( "{\"foo\": true}") অবহিত না করা হয় তবে আপনার এপিআই ত্রুটি ছুঁড়ে ফেলেছে, আপনার যা করতে হবে তা কেবল দ্বিগুণ stringJSON.stringify(JSON.stringify(bar))


-1

স্ট্রিংটি এনকোড করতে এনকোডিউআরআইকিউম্পোন্ট () ব্যবহার করুন।

যেমন। var myEscapedJSONString = encodeURIComp घटक (JSON.stringify (myJSON));

ওয়েব সার্ভারটি স্বয়ংক্রিয়ভাবে একই কাজ করায় আপনার এটিকে ডিকোড করার দরকার নেই।


-8

কখনও নিয়মিত এক্সপ্রেশন ব্যবহার করবেন না (আমার অর্থ কখনই নয়)। সর্বোত্তম এবং কার্যকর উপায়:

String.prototype.escapeJSON = function() {
    var result = "";
    for (var i = 0; i < this.length; i++)
    {
        var ch = this[i];
        switch (ch)
        {
            case "\\": ch = "\\\\"; break;
            case "\'": ch = "\\'"; break;
            case "\"": ch = '\\"'; break;
            case "\&": ch = "\\&"; break;
            case "\t": ch = "\\t"; break;
            case "\n": ch = "\\n"; break;
            case "\r": ch = "\\r"; break;
            case "\b": ch = "\\b"; break;
            case "\f": ch = "\\f"; break;
            case "\v": ch = "\\v"; break;
            default: break;
        }

        result += ch;
    }

    return result;
};

আপনি বলতে পারবেন না, "কখনই নিয়মিত এক্সপ্রেশন ব্যবহার করবেন না (মানে আমি কখনই পছন্দ করি না")। প্রতিটি সরঞ্জাম তার উদ্দেশ্য পরিবেশন করে।
zstate

আপনার উত্তরটি বৈধ, আপনি কেবল এটি একটি অত্যন্ত মতামতযুক্তভাবে প্রকাশ করেছেন, যা বিভ্রান্তি সৃষ্টি করতে পারে, বিশেষত জুনিয়রদের জন্য।
zstate

@ আনকোড নিয়মিত প্রকাশগুলি অবিশ্বাস্য বেহুদা হয়, সেগুলি কীভাবে এবং কখন ব্যবহার করা উচিত। এটি কেবল অপরিজ্ঞাত আচরণ এবং সিপিইউ সময় নষ্ট করার দিকে পরিচালিত করে।
এলেক ডিপিলার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.