पर फेंकने की गलत वस्तु बनाता है जब मैं इस अमान्य JSON स्ट्रिंग (}]
अंत में लापता) deserialise करने की कोशिश:ServiceStack.Text json अक्रमांकन बजाय अमान्य JSON इनपुट स्ट्रिंग
[{"ExtId":"2","Name":"VIP sj�lland","Mobiles":["4533333333","4544444444"]
ऐसा करने से
var result = JsonSerializer.DeserializeFromString<T>(str);
ServiceStack json deserializer स्ट्रिंग को स्वीकार करता है, लेकिन यह एक गलत वस्तु बनाता है, क्योंकि मैं एक सी # वस्तु इन मूल्यों होने के साथ खत्म:
ExtId : "2" // ok fine.
Name: "VIP sj�lland" // ok fine
Mobiles: ["4533333333","4544444444", "544444444"]// Aarg! An array with 3 objects ?!?
// There were only two in the JSON string.
इस मामले में खराब डेटा जारी रखने के बजाय अपवाद को फेंकना बेहतर होगा। इसलिए मैंने इसका उपयोग करने की कोशिश की:
JsConfig.ThrowOnDeserializationError = true;
DeserializeFromString को कॉल करने से ठीक पहले, लेकिन कोई अपवाद नहीं फेंक दिया गया था। जनवरी में मैंने इस प्रश्न Configure ServiceStack.Text to throw on invalid JSON से पूछा और जवाब यह था कि सर्विसस्टैक लचीलापन का पक्ष ले रहा है और मैं गिटहब में एक पुल अनुरोध कर सकता हूं।
क्या यह अभी भी मामला है? और क्या किसी ने इसे पहले ही किया है, मुझे परेशानी बचा रही है? अन्यथा, मैं बहुत तंग कार्यक्रम पर हूं, इसलिए यदि किसी के पास deserialization त्रुटियों पर सर्विसस्टैक फेंकने के लिए विकल्प-ध्वज बनाने के लिए कुछ कोड या सुझाव हैं, तो कृपया यहां जवाब दें, ताकि मैं इसे तेज़ी से कर सकूं।
मैं अपने मूल पोस्ट को देखा, मैं मानता हूँ आप कम से कम पर सख्त json सत्यापन चालू करने के लिए एक विकल्प होना चाहिए। मुझे न्यूटॉन्सॉफ्ट सीरियलाइज़र पर वापस स्विच करके एक ही परिणाम मिलते हैं। जैसा कि मेरे कॉलेजों में से एक ने बताया कि यदि हम लचीला क्रमिकरण का उपयोग करते हैं तो हम कचरा एचटीएमएल को त्रुटियों के बिना पार्स किए जाने की अनुमति देने के समान सड़क पर वापस जा रहे हैं जहां यह मैला डेवलपर्स की अनुमति देता है। – Bronumski
यह सिर्फ एक बग की तरह दिखता है। क्या आपने [इसके लिए एक मुद्दा] दायर किया है (https://github.com/ServiceStack/Issues/issues/new)? – jlyonsmith