JSON এ স্ট্রিংগুলি কীভাবে পালানো উচিত?


154

ম্যানুয়ালি JSON ডেটা তৈরি করার সময়, আমি কীভাবে স্ট্রিংয়ের ক্ষেত্রগুলি এড়িয়ে চলব? বলা উচিৎ? কিছু এ্যাপাচি কমন্স ল্যাঙ এর ব্যবহার StringEscapeUtilities.escapeHtml, StringEscapeUtilities.escapeXml, অথবা আমি ব্যবহার করা উচিত java.net.URLEncoder?

সমস্যাটি হ'ল আমি যখন ব্যবহার করি তখন SEU.escapeHtmlতা উদ্ধৃতিগুলি এড়ায় না এবং যখন আমি পুরো স্ট্রিংটিকে একটি জোড়ায় গুটিয়ে রাখি ', তখন একটি ত্রুটিযুক্ত জেএসএন উত্পন্ন হবে।


20
আপনি যদি একটি জোড়ায় পুরো স্ট্রিংটি মোড়ানো করেন তবে আপনি 'শুরু থেকেই ডুমেড হয়ে যাচ্ছেন: জেএসএন স্ট্রিংগুলি কেবলমাত্র এটিকে ঘিরে রাখা যেতে পারে "Ietf.org/rfc/rfc4627.txt দেখুন ।
থানাটোস

2
StringEscapeUtilitiesরূপরেখার জন্য +1 এটি বেশ কার্যকর।
মুহাম্মদ জেলবানা

উত্তর:


157

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

আরএফসি অনুসারে এড়িয়ে চলুন। তাদেরকে JSON চমত্কার উদার: শুধুমাত্র আপনি যে অক্ষরগুলি আবশ্যক অব্যাহতি হয় \, "এবং নিয়ন্ত্রণ কোড (কিছু U + এ 0020 কম)।

পালানোর এই কাঠামোটি জেএসএনের জন্য নির্দিষ্ট। আপনার একটি JSON নির্দিষ্ট ফাংশন প্রয়োজন হবে। পালিয়ে যাওয়া সমস্তকেই লেখা যেতে পারে \uXXXXযেখানে XXXXইউটিএফ -16 কোড ইউনিট¹ সেই চরিত্রটির জন্য। কয়েকটি শর্টকাট রয়েছে, যেমন \\, যা কাজ করে। (এবং এর ফলে একটি ছোট এবং আরও পরিষ্কার আউটপুট পাওয়া যায়))

সম্পূর্ণ বিবরণের জন্য, আরএফসি দেখুন

Sজেসনের পালানো জেএস-তে নির্মিত, তাই এটি ব্যবহার করে \uXXXX, যেখানে XXXXইউটিএফ -16 কোড ইউনিট রয়েছে। বিএমপির বাইরে কোড পয়েন্টগুলির জন্য, এর অর্থ সুরোগেট জোড়া এনকোডিং করা, যা কিছুটা লোমশ হয়ে উঠতে পারে। (বা, আপনি কেবল অক্ষরটি সরাসরি আউটপুট করতে পারেন, যেহেতু জেএসওএন এর এনকোডযুক্ত ইউনিকোড পাঠ্য এবং এই বিশেষ অক্ষরগুলিকে অনুমতি দেয়))


জাভাস্ক্রিপ্টের মতো জেএসওনেও কি ডাবল কোট বা একক উদ্ধৃতিতে স্ট্রিংগুলি আবদ্ধ করা বৈধ? বা এগুলি কেবল ডাবল উদ্ধৃতিতে সংযুক্ত করা বৈধ?
বেহরং সাইদজাদেহে

14
কেবল ডাবল উদ্ধৃতি ( ")।
থানাটোস

3
@ সের্গেই: {[]}:?একক ব্যাকস্ল্যাশ দিয়ে চরিত্রগুলি অবশ্যই পালানো উচিত নয়। ( \:উদাহরণস্বরূপ, জেএসএন স্ট্রিংয়ে এটি বৈধ নয়)) \uXXXXবেশিরভাগ বাইটের অপব্যয় করে এগুলি সমস্তই বিকল্পভাবে বাক্য গঠন ব্যবহার করে পালাতে পারবেন । আরএফসির §2.5 দেখুন।
থানাটোস

2
এটি কতটা ব্যাপকভাবে সমর্থিত তা আমি নিশ্চিত নই, তবে আমার অভিজ্ঞতায় JSON.stringify()এই কাজটি করার জন্য একটি কল ।
এলএস

2
@ বিটটিকলার একটি ইউনিকোড চরিত্রটি মোটেও অস্পষ্ট নয় - এর অর্থ কেবল ইউনিকোডের অনুমানে একটি কোড পয়েন্ট (বা পয়েন্ট) রয়েছে। আপনি যখন std :: স্ট্রিং ব্যবহার করেন, এটি ইউনিকোড অক্ষরের একটি গুচ্ছ। আপনার যখন এটি সিরিয়াল করার দরকার হবে তখন একটি ফাইলকে বা নেটওয়ার্ক জুড়ে বলতে দিন, সেখানেই 'কোন এনকোডিং' আসে Than থানাটোসের মতে তারা মনে করে যে আপনি কোনও ইউটিএফ ব্যবহার করতে চান, তবে প্রযুক্তিগতভাবে কোনও এনকোডিং যতক্ষণ ব্যবহার করা যেতে পারে এটি ইউনিকোড অক্ষরগুলিতে পুনর্গঠন করা যেতে পারে।
জেরার্ড ওনিল

54

জেটিসন থেকে নিষ্কাশন :

 public static String quote(String string) {
         if (string == null || string.length() == 0) {
             return "\"\"";
         }

         char         c = 0;
         int          i;
         int          len = string.length();
         StringBuilder sb = new StringBuilder(len + 4);
         String       t;

         sb.append('"');
         for (i = 0; i < len; i += 1) {
             c = string.charAt(i);
             switch (c) {
             case '\\':
             case '"':
                 sb.append('\\');
                 sb.append(c);
                 break;
             case '/':
 //                if (b == '<') {
                     sb.append('\\');
 //                }
                 sb.append(c);
                 break;
             case '\b':
                 sb.append("\\b");
                 break;
             case '\t':
                 sb.append("\\t");
                 break;
             case '\n':
                 sb.append("\\n");
                 break;
             case '\f':
                 sb.append("\\f");
                 break;
             case '\r':
                sb.append("\\r");
                break;
             default:
                 if (c < ' ') {
                     t = "000" + Integer.toHexString(c);
                     sb.append("\\u" + t.substring(t.length() - 4));
                 } else {
                     sb.append(c);
                 }
             }
         }
         sb.append('"');
         return sb.toString();
     }

10
ঠিক আছে, এটি ওপি ট্যাগ ছিল
মনোথ্রেড

কেবলমাত্র সি <'' হলেই বুঝবেন না, \ u তে পরিবর্তন করুন। আমার ক্ষেত্রে, চরিত্রটি রয়েছে D uD38D, যা 55357 এবং তার বেশি '' এর বেশি, তাই \ u তে পরিবর্তন হয় না ...
স্টনি

1
@ স্টোনি একটি নতুন প্রশ্নের মতো মনে হচ্ছে
মনোথ্রেডড

@ মনোট্রেডেড আপনার উত্তরের জন্য ধন্যবাদ, আমি এখনও জানি না কেন। তবে পরিশেষে, আমি নীচের মতো এটি ঠিক করার পদ্ধতিটি পরিবর্তন করেছি, যদি (c <'' || c> 0x7f) {t = "000" + Integer.toHexString (c) .toUpperCase (); sb.append ("\\ u" + t.substring (t.leth () - 4%); } অন্য {sb.append (সি); }}
স্টনি

1
@Stony, তিনি সকলের চেয়ে অন্য অক্ষর ", \ , এবং নিয়ন্ত্রণ অক্ষর (আগে "" ঐ) দীর্ঘ আউটপুট এনকোডিং হিসাবে ম্যাচ যেমন বৈধ ভিতরে তাদেরকে JSON স্ট্রিং হয়। অন্য কথায়, \uD38Dযতক্ষণ না ইউটিএফ এনকোডিং সংরক্ষণ করা হয় ততক্ষণ আপনার "펍" এনকোড করার দরকার নেই ।
মিউস্ট্রাস

37

এই চেষ্টা করুন org.codehaus.jettison.json.JSONObject.quote("your string")

এটি এখানে ডাউনলোড করুন: http://mvnrepository.com/artifact/org.codehaus.jettison/ জেটসিসন


অবশ্যই সেরা সমাধান! ধন্যবা
Lastnico

তবে এটি [{
সের্গেই

1
@ সের্গেই আপনাকে জেএসওএন স্ট্রিংয়ের অভ্যন্তরে ধনুর্বন্ধনী রক্ষা করতে হবে না।
ইয়ুবার্ট

এটি আসলে কী ফিরে আসে তা দেখাতে দরকারী হতে পারে।
ট্রেভর

2
org.json.JSONObject.quote ("আপনার জসন স্ট্রিং" )ও দুর্দান্ত কাজ করে
ওয়েবজকি

23

org.json.simple.JSONObject.escape () উদ্ধৃতিগুলি, \, /, \ r, \ n, \ b, \ f, \ t এবং অন্যান্য নিয়ন্ত্রণের অক্ষরগুলি ছেড়ে যায়। এটি জাভাস্ক্রিপ্ট কোডগুলি এড়াতে ব্যবহার করা যেতে পারে।

import org.json.simple.JSONObject;
String test =  JSONObject.escape("your string");

3
এটি আপনি যে জেএসন লাইব্রেরি ব্যবহার করছেন তার উপর নির্ভর করে (JSONObject.escape, JSONObject.quote, ..) তবে এটি বরাবরই একটি স্থির পদ্ধতি যা উদ্ধৃত কাজ করছে এবং কেবল পুনরায় ব্যবহার করা উচিত
amine

Org.json কোন লাইব্রেরির অংশ? আমার ক্লাসপথে এটা নেই।
অ্যালেক্স স্পার্লিং


22

অ্যাপাচি কমন্স ল্যাং এখন এটি সমর্থন করে। কেবলমাত্র আপনার ক্লাসপাঠে অ্যাপাচি কমন্স ল্যাং-এর সাম্প্রতিক পর্যায়ে সংস্করণ রয়েছে তা নিশ্চিত করুন। আপনার সংস্করণ 3.2+ লাগবে

সংস্করণ 3.2 এর জন্য বিজ্ঞপ্তি প্রকাশ করুন

ল্যাং -797: স্ট্রিংএস্কেপ ইউটিলেস থেকে পালানো / আনস্কেপ জেসন যুক্ত করা হয়েছে।


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

ফলোআপ হিসাবে, এবং আমি কীভাবে কোনও মন্তব্য সম্পাদনা করব তা বুঝতে পারি না বলে আমি একটি নতুন যুক্ত করেছি, আমি javax.json.JsonObjectBuilder এবং javax.json.JsonWriter পেয়েছি। খুব সুন্দর নির্মাতা / লেখকের সংমিশ্রণ।
অ্যাবমিথস

1
এটি অ্যাপাচি কমন্স ল্যাংয়ে অবহিত করা হয়েছে, আপনাকে অ্যাপাচি কমন্স পাঠ্য ব্যবহার করা দরকার । দুঃখের বিষয়, এই পাঠাগারটি /অক্ষরগুলি অবলম্বন করে alচ্ছিক / পুরানো অনুশীলনগুলি অনুসরণ করে । এটি এতে ইউআরএল সহ জেএসএন সহ প্রচুর জিনিস ভাঙে। মূল প্রস্তাবটি /পালাতে একটি বিশেষ চর হিসাবে ছিল তবে এটি আর হয় না, যেমনটি আমরা লেখার সময় সর্বশেষ প্রতিবেদনে
অ্যাডামনফিশ ২

10

org.json.JSONObject quote(String data) পদ্ধতি কাজ করে

import org.json.JSONObject;
String jsonEncodedString = JSONObject.quote(data);

ডকুমেন্টেশন থেকে নিষ্কাশন:

JSON স্ট্রিং হিসাবে ডেটা এনকোড করে। এটি উদ্ধৃতি এবং কোনও প্রয়োজনীয় চরিত্রের পালনের জন্য প্রয়োগ করে । [...] নালকে খালি স্ট্রিং হিসাবে ব্যাখ্যা করা হবে


1
org.apache.sling.commons.json.JSONObjectএছাড়াও এই একই জিনিস রয়েছে
জর্ডান শুরমার


4

যদি আপনি ফাস্টটেক্সিল জ্যাকসন ব্যবহার করেন তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন: com.fasterxml.jackson.core.io.JsonStringEncoder.getInstance().quoteAsString(input)

আপনি যদি কোডহাস জ্যাকসন ব্যবহার করছেন তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন: org.codehaus.jackson.io.JsonStringEncoder.getInstance().quoteAsString(input)


3

"ম্যানুয়ালি জসন তৈরি করে" আপনি কী বোঝাতে চেয়েছেন তা নিশ্চিত নন তবে আপনি জিএসএন ( http://code.google.com/p/google-gson/ ) এর মতো কিছু ব্যবহার করতে পারেন এবং এটি আপনার হ্যাশম্যাপ, অ্যারে, স্ট্রিং ইত্যাদিকে রূপান্তরিত করবে , একটি JSON মান। আমি এই জন্য একটি কাঠামো সঙ্গে যেতে সুপারিশ।


2
ম্যানুয়ালি বলতে চাইছি সিম্পল জেএসএন, গসন বা এক্সস্ট্রিমের মতো কোনও জেএসওএন লাইব্রেরি ব্যবহার করে নয়।
বেহরং সাইদজাদেহে

কেবল কৌতূহলের বিষয় - আপনি এই API গুলির একটিও কেন ব্যবহার করতে চান না? এটি ইউআরএলএনকোড / ডিকোড ব্যবহারের পরিবর্তে ম্যানুয়ালি ইউআরএলগুলি পালানোর চেষ্টা করার মতো ...
ভ্লাদিমির

1
সত্যিই একই নয়, সেই লাইব্রেরিগুলি ইউআরএলএনকোড / ডিকোডের সমতুল্য তুলনায় অনেক বেশি আসে, তারা জাসন আকারে জাভা অবজেক্টের অধ্যবসায়ের জন্য একটি সম্পূর্ণ সিরিয়ালাইজেশন প্যাকেজ অন্তর্ভুক্ত করে এবং কখনও কখনও আপনার কেবলমাত্র একটি সংক্ষিপ্ত পাঠের এনকোড করা দরকার
জেএমডি

2
জেএসএনের একটি ম্যানুয়াল তৈরি করার অর্থ কী, যদি আপনি কেবলমাত্র ছোট ছোট বিটের সিরিয়ালাইজ করার জন্য কোনও লাইব্রেরি অন্তর্ভুক্ত না করতে চান
আদিত্য কুমার পান্ডে

2
আমি যদি কোনও জেএসওএনকে ম্যানুয়ালি তৈরি করতে সাহস করে যেখানে এমন একটি উচ্চ মানের লাইব্রেরি রয়েছে যেখানে আমি কোনও প্রকল্প থেকে একজন দল সদস্যকে অপসারণ করতে বলব।
মাইকেল জয়েস

2

আমি 100% নির্দিষ্ট করে দেওয়ার জন্য সময় ব্যয় করি নি, তবে এটি অনলাইন জেএসওএন বৈধকারীর দ্বারা গ্রহণযোগ্যতার জন্য আমার ইনপুটগুলির পক্ষে যথেষ্ট কাজ করেছে:

org.apache.velocity.tools.generic.EscapeTool.EscapeTool().java("input")

যদিও এটি এর চেয়ে ভাল কিছু মনে হচ্ছে না org.codehaus.jettison.json.JSONObject.quote("your string")

আমি ইতিমধ্যে আমার প্রকল্পে কেবল বেগের সরঞ্জামগুলি ব্যবহার করি - আমার "ম্যানুয়াল জেএসওএন" বিল্ডিংটি বেগের টেম্পলেটের মধ্যে ছিল


2

আমার মতো কমান্ড-লাইন সমাধানের জন্য যারা এখানে এসেছেন তাদের জন্য, সিআরএল-র ডেটা-ইউরেলকোডটি ভাল কাজ করে:

curl -G -v -s --data-urlencode 'query={"type" : "/music/artist"}' 'https://www.googleapis.com/freebase/v1/mqlread'

পাঠায়

GET /freebase/v1/mqlread?query=%7B%22type%22%20%3A%20%22%2Fmusic%2Fartist%22%7D HTTP/1.1

, উদাহরণ স্বরূপ. বৃহত্তর JSON ডেটা কোনও ফাইলে রাখা যেতে পারে এবং আপনি @ সিনট্যাক্সটি ব্যবহার করে বেঁচে যাওয়া ডেটাতে স্লুর্প করতে একটি ফাইল নির্দিষ্ট করতে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি

$ cat 1.json 
{
  "type": "/music/artist",
  "name": "The Police",
  "album": []
}

আপনি ব্যবহার করবেন

curl -G -v -s --data-urlencode query@1.json 'https://www.googleapis.com/freebase/v1/mqlread'

এবং এখন, এটি কমান্ড লাইন থেকে ফ্রিবেসকে কীভাবে জিজ্ঞাসা করতে হবে তার একটি টিউটোরিয়াল :-)


2

কমন্স ল্যাং এপিআই-তে এস্কেপটিলস ক্লাস ব্যবহার করুন।

EscapeUtils.escapeJavaScript("Your JSON string");

1
নোট করুন যে জাভাস্ক্রিপ্ট বা জসন থেকে বেরোনোর ​​জন্য উদাহরণস্বরূপ একক উদ্ধৃতিগুলি আলাদাভাবে পরিচালনা করা হয়। Commons.lang 3.4-এ স্ট্রিংএস্কেপ ইউটিলেস ( Commons.apache.org/proper/commons-lang/javadocs/api-3.4/org/… ) এ একটি এসপ্যাসজেএসএন পদ্ধতি রয়েছে যা কমন্স.এলং 2: এসএমএস-
গ্লেনভি

1

বিবেচনা করুন Moshi এর JsonWriter বর্গ। এটির একটি দুর্দান্ত এপিআই রয়েছে এবং এটি ন্যূনতমতে অনুলিপি হ্রাস করে, সমস্ত কিছুই দুর্দান্তভাবে ফাইলড, আউটপুটস্ট্রিম ইত্যাদিতে স্ট্রিম করা যায়

OutputStream os = ...;
JsonWriter json = new JsonWriter(Okio.buffer(Okio.sink(os)));
json.beginObject();
json.name("id").value(getId());
json.name("scores");
json.beginArray();
for (Double score : getScores()) {
  json.value(score);
}
json.endArray();
json.endObject();

যদি আপনি হাতে স্ট্রিং চান:

Buffer b = new Buffer(); // okio.Buffer
JsonWriter writer = new JsonWriter(b);
//...
String jsonString = b.readUtf8();


0

আপনার যদি JSON স্ট্রিংয়ের মধ্যে JSON থেকে পালাতে হবে, org.json.JSONObject.quote ব্যবহার করুন ("আপনার জসন স্ট্রিং যা পালাতে হবে") ভাল কাজ করছে বলে মনে হচ্ছে


0

ইউএনএক্সএক্সএক্সএক্সএক্স সিন্ট্যাক্স ব্যবহার করে এই সমস্যার সমাধান করতে পারে, গুগলের ইউটিএফ -16 সাইন নামের সাথে আপনি এক্সএক্সএক্সএক্স বের করতে পারেন, উদাহরণস্বরূপ: utf-16 ডাবল উদ্ধৃতি


0

প্রকৃত বাস্তবায়ন দেখানোর জন্য এখানে পদ্ধতিগুলি সমস্ত ত্রুটিযুক্ত।
আমার কাছে জাভা কোড নেই, তবে কেবল রেকর্ডের জন্য আপনি সহজেই এই সি #-কোডটি রূপান্তর করতে পারেন:

মনো-প্রকল্পের সৌজন্যে @ https://github.com/mono/mono/blob/master/mcs/class/System.Web/System.Web/HttpUtility.cs

public static string JavaScriptStringEncode(string value, bool addDoubleQuotes)
{
    if (string.IsNullOrEmpty(value))
        return addDoubleQuotes ? "\"\"" : string.Empty;

    int len = value.Length;
    bool needEncode = false;
    char c;
    for (int i = 0; i < len; i++)
    {
        c = value[i];

        if (c >= 0 && c <= 31 || c == 34 || c == 39 || c == 60 || c == 62 || c == 92)
        {
            needEncode = true;
            break;
        }
    }

    if (!needEncode)
        return addDoubleQuotes ? "\"" + value + "\"" : value;

    var sb = new System.Text.StringBuilder();
    if (addDoubleQuotes)
        sb.Append('"');

    for (int i = 0; i < len; i++)
    {
        c = value[i];
        if (c >= 0 && c <= 7 || c == 11 || c >= 14 && c <= 31 || c == 39 || c == 60 || c == 62)
            sb.AppendFormat("\\u{0:x4}", (int)c);
        else switch ((int)c)
            {
                case 8:
                    sb.Append("\\b");
                    break;

                case 9:
                    sb.Append("\\t");
                    break;

                case 10:
                    sb.Append("\\n");
                    break;

                case 12:
                    sb.Append("\\f");
                    break;

                case 13:
                    sb.Append("\\r");
                    break;

                case 34:
                    sb.Append("\\\"");
                    break;

                case 92:
                    sb.Append("\\\\");
                    break;

                default:
                    sb.Append(c);
                    break;
            }
    }

    if (addDoubleQuotes)
        sb.Append('"');

    return sb.ToString();
}

এটি মধ্যে সংক্ষিপ্ত করা যেতে পারে

    // https://github.com/mono/mono/blob/master/mcs/class/System.Json/System.Json/JsonValue.cs
public class SimpleJSON
{

    private static  bool NeedEscape(string src, int i)
    {
        char c = src[i];
        return c < 32 || c == '"' || c == '\\'
            // Broken lead surrogate
            || (c >= '\uD800' && c <= '\uDBFF' &&
                (i == src.Length - 1 || src[i + 1] < '\uDC00' || src[i + 1] > '\uDFFF'))
            // Broken tail surrogate
            || (c >= '\uDC00' && c <= '\uDFFF' &&
                (i == 0 || src[i - 1] < '\uD800' || src[i - 1] > '\uDBFF'))
            // To produce valid JavaScript
            || c == '\u2028' || c == '\u2029'
            // Escape "</" for <script> tags
            || (c == '/' && i > 0 && src[i - 1] == '<');
    }



    public static string EscapeString(string src)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();

        int start = 0;
        for (int i = 0; i < src.Length; i++)
            if (NeedEscape(src, i))
            {
                sb.Append(src, start, i - start);
                switch (src[i])
                {
                    case '\b': sb.Append("\\b"); break;
                    case '\f': sb.Append("\\f"); break;
                    case '\n': sb.Append("\\n"); break;
                    case '\r': sb.Append("\\r"); break;
                    case '\t': sb.Append("\\t"); break;
                    case '\"': sb.Append("\\\""); break;
                    case '\\': sb.Append("\\\\"); break;
                    case '/': sb.Append("\\/"); break;
                    default:
                        sb.Append("\\u");
                        sb.Append(((int)src[i]).ToString("x04"));
                        break;
                }
                start = i + 1;
            }
        sb.Append(src, start, src.Length - start);
        return sb.ToString();
    }
}

quote()অন্যান্য উত্তরে বর্ণিত পদ্ধতিটি কীভাবে ত্রুটিযুক্ত?
স্যান্ডি

0

আমি মনে করি 2017 এর সেরা উত্তর হ'ল জাভ্যাক্স.জেসন এপিআইগুলি ব্যবহার করা। আপনার জসন বস্তু তৈরি করতে javax.json.JsonBuilderFactory ব্যবহার করুন, তারপরে javax.json.JsonWriterFactory ব্যবহার করে অবজেক্টগুলি লিখুন। খুব সুন্দর নির্মাতা / লেখকের সংমিশ্রণ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.