क्या आप जीसस "<" और ">" को यूनिकोड से बचने वाले दृश्यों में परिवर्तित करने से बच सकते हैं?


127

मैंने देखा कि GSON स्ट्रिंग को <<"JSON आउटपुट में एक यूनिकोड एस्केप अनुक्रम में परिवर्तित करता है। क्या आप किसी भी तरह से इससे बच सकते हैं, या "<" और ">" जैसे चरित्र हमेशा JSON में बच सकते हैं?

इस उदाहरण पर विचार करें जो प्रिंट करता है {"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 पृष्ठों या यहां तक ​​कि जावास्क्रिप्ट से कोई लेना-देना नहीं है; इसका उपयोग केवल कुछ संरचित जानकारी को सॉफ़्टवेयर के किसी अन्य टुकड़े (डिवाइस में एम्बेडेड, C में लिखा गया है) पास करने के लिए किया जाता है।


2
क्या जीएसओएन ऐसा करने में चूक करता है? वाह। यह बल्कि अजीब डिफ़ॉल्ट सेटिंग है, हालांकि JSON कल्पना परिप्रेक्ष्य से पूरी तरह से कानूनी बात है।
— स्टेक्समैन

3
हाँ, यह मेरे लिए भी आश्चर्यजनक था। सौभाग्य से उपाय आसान है एक बार जब आप जानते हैं कि कहाँ देखना है। :) अन्यथा, इसके साथ एक दिन के अनुभव के बाद, मैं एक महान उपयोगकर्ता गाइड के साथ, वास्तव में साफ-सुथरी अच्छी लाइब्रेरी को खोजता हूं !
— जोनीक

6
यह "=" वर्ण के लिए भी होता है, जो "\ u003d" में बदल जाता है।
— रसेल सिल्वा

जवाबों:


253

आपको HTML भागने से अक्षम करना होगा ।

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

11
मुझे आश्चर्य है कि यह डिफ़ॉल्ट रूप से क्यों है। JSON का HTML से कोई लेना-देना नहीं है। कल्पना राज्यों केवल "और `\` जरूरत फरार हो जाना है।
— मार्क जेरोनिमस

दोस्तों, मेरे लिए काम नहीं किया। मैं '' com.squareup.retrofit2: retrofit: 2.3.0 '' और& '' com.squareup.retrofit2: कनवर्टर-गॉन: 2.3.0 '' का उपयोग कर रहा हूं। क्रिप्या मेरि सहायता करे।
— मि। कोड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.