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


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.