আপনি কি গসনকে "<" এবং ">" কে ইউনিকোড পালানোর অনুক্রমগুলিতে রূপান্তর করতে পারবেন?


127

আমি লক্ষ্য করেছি যে জেসন আউটপুটে "<" স্ট্রিংটিকে একটি ইউনিকোড এস্কেপ সিকোয়েন্সে রূপান্তর করে। আপনি কি কোনওভাবে এড়াতে পারবেন, বা "<" এবং ">" এর মতো চরিত্রগুলি সবসময় জেএসএন এড়িয়ে যেতে হবে?

এই উদাহরণটি বিবেচনা করুন যা প্রিন্ট করে {"s":"\u003c"}; আমি কেবল চাই চাই {"s":"<"}

public static void main(String[] args) {
    Gson gson = new GsonBuilder().create();
    System.out.println(gson.toJson(new Foo()));  
}

static class Foo {
    String s = "<";
}

প্রসঙ্গ: আমি তৈরি করছি JSON এর অংশটি HTML পৃষ্ঠাগুলি বা জাভাস্ক্রিপ্টের সাথে কিছুই করার নেই; এটি সুনির্দিষ্ট কাঠামোগত তথ্য অন্য একটি সফ্টওয়্যার (কোনও ডিভাইসে এম্বেড করা, সি তে লেখা) তে নির্দিষ্ট কাঠামোর তথ্য দেওয়ার জন্য ব্যবহৃত হয়েছিল।


2
জিএসওন কি এটি করতে ডিফল্ট? দাঁড়ান। এটি বরং অদ্ভুত ডিফল্ট সেটিংস, যদিও জেএসএন স্পষ্ট দৃষ্টিকোণ থেকে পুরোপুরি আইনী জিনিস legal
স্ট্যাক্সমান

3
হ্যাঁ, এটি আমার জন্যও অবাক হয়েছিল। ভাগ্যক্রমে আপনি কোথায় খুঁজছেন তা জানার পরে প্রতিকারটি সহজ। :) অন্যথায়, এটির সাথে এক দিনের অভিজ্ঞতার পরে, আমি জিএসনকে একটি দুর্দান্ত পরিষ্কার, দুর্দান্ত লাইব্রেরি পেয়েছি, যাতে দুর্দান্ত ব্যবহারকারীর গাইডও রয়েছে !
জোনিক

6
এটি "=" চরিত্রের ক্ষেত্রেও ঘটে যা "\ u003d" তে পরিণত হয়।
রাসেল সিলভা 21

উত্তর:


253

আপনার এইচটিএমএল এস্কেপিং অক্ষম করতে হবে ।

Gson gson = new GsonBuilder().disableHtmlEscaping().create();

11
আমি অবাক হয়েছি কেন এটি ডিফল্টরূপে চালু আছে। এইচটিএমএলের সাথে জেএসএনের কোনও সম্পর্ক নেই। বৈশিষ্ট রাজ্যের শুধুমাত্র "এবং `\` প্রয়োজন পলান করা হবে।
মার্ক জেরোনিমাস

বন্ধুরা, আমার পক্ষে কাজ করে নি। আমি '' com.squareup.retrofit2: retrofit: 2.3.0 '' && '' com.squareup.retrofit2: রূপান্তরকারী-জিএসন: 2.3.0 '' ব্যবহার করছি। আমাকে সাহায্য করুন.
মিস্টার কোড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.