के अवैध स्तर की वजह से मुझे एक अजीब व्यवहार है जब जीसन के साथ एक जेसन पार्सिंग करते हैं। मैं इस कोड का उपयोग करता हूं:जीसन सिंटैक्स एक्सेप्शन जीएसन
private static Container parseContainer(String containerJson) {
try {
//TODO Remove try catch when Bug is done
return containerJson != null ? new Gson().fromJson(containerJson, Container.class)
: null;
} catch (JsonSyntaxException e) {
LOGGER.error("JsonSyntaxException ", e);
LOGGER.error("Json: " + containerJson);
//Sleep 3 minutes and try again.
try {
Thread.sleep(1000L * 60 * 3);
} catch (InterruptedException e1) {
LOGGER.error("Exception", e);
}
LOGGER.error("Try again to parse json: " + containerJson);
Container result = new Gson().fromJson(containerJson, Container.class);
LOGGER.error("Parsing successful on second try.");
return result;
}
}
जब मेरी परियोजना में विधि लागू की जाती है, तो यह आमतौर पर अपवाद फेंकने के बिना काम करता है। लेकिन कभी-कभी अपवाद फेंक दिया जाता है और कुछ समय इंतजार करने के बाद, पार्सिंग ठीक काम करती है।
मुझे पता नहीं चला है कि अपवाद फेंक दिया गया है और कब नहीं।
लॉग "दूसरे प्रयास पर सफल पार्सिंग" लॉग कैसे हो सकता है?
अपवाद
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapt erFactory.java:176)
at com.google.gson.Gson.fromJson(Gson.java:803)
at com.google.gson.Gson.fromJson(Gson.java:768)
at com.google.gson.Gson.fromJson(Gson.java:717)
at com.google.gson.Gson.fromJson(Gson.java:689)
ऐसा लगता है कि "दूसरी कोशिश पर पार्सिंग सफल" लॉग प्रिंट से पहले जेसन कॉल से अपवाद को फेंक दिया जा रहा है। क्या आप यहां एक असफल JSON दिखा सकते हैं? –
लॉगऑस पर JSON को लॉग इन करने से पहले लॉग इन करने के लिए लॉग इन करें और अपवाद से पहले पार्स करने का प्रयास करने वाले सटीक डेटा को ट्रैक करें - इस तरह आप डेटा सही होने पर डीबग कर सकते हैं। शायद आप जिस बैकएंड का उपयोग कर रहे हैं उसमें एक बग है। –
क्या आपने अपना जेसन सत्यापित किया है? आप अपने जेसन –