解析json文件会引发stackoverflow异常

时间:2014-08-26 16:26:46

标签: java json

我有一个非常复杂的对象,到目前为止我用它通过@XmlRootElement将它序列化为xml并且运行得非常好。现在我正在编写REST,我需要将它序列化为json。会发生什么是抛出StackOverflowError异常。到目前为止我写的是原因可能是双向映射,但我认为这不是我的情况。可能是什么原因以及如何跟踪我是否错过了双向映射,这个对象非常复杂并且很长时间都受到很多人的支持,有一种简单的方法可以跟踪这个我想不到的吗? 谢谢!

EDIT 这是堆栈跟踪:

StackOverflowError
    java.util.regex.Pattern.sequence(Pattern.java:1902)
    java.util.regex.Pattern.expr(Pattern.java:1769)
    java.util.regex.Pattern.compile(Pattern.java:1477)
    java.util.regex.Pattern.<init>(Pattern.java:1150)
    java.util.regex.Pattern.compile(Pattern.java:840)
    net.sf.json.regexp.JdkRegexpMatcher.<init>(JdkRegexpMatcher.java:38)
    net.sf.json.regexp.JdkRegexpMatcher.<init>(JdkRegexpMatcher.java:31)
    net.sf.json.regexp.RegexpUtils.getMatcher(RegexpUtils.java:39)
    net.sf.json.util.JSONTokener.matches(JSONTokener.java:113)
    net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:962)
    net.sf.json.JSONObject.fromObject(JSONObject.java:156)
    net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:350)
    net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1006)
    net.sf.json.JSONObject.fromObject(JSONObject.java:156)
    net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:350)
    net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1006)
    net.sf.json.JSONObject.fromObject(JSONObject.java:156)
    net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:350)
    net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1006)
    net.sf.json.JSONObject.fromObject(JSONObject.java:156)
    net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:350)
    net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1006)
    net.sf.json.JSONObject.fromObject(JSONObject.java:156)
    net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:350)
    net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1006)
    net.sf.json.JSONObject.fromObject(JSONObject.java:156)
    net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:350)
    net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1006)
    net.sf.json.JSONObject.fromObject(JSONObject.java:156)
    net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:350)
    net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1006)
    net.sf.json.JSONObject.fromObject(JSONObject.java:156)
    net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:350)
    net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1006)
    net.sf.json.JSONObject.fromObject(JSONObject.java:156)
    net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:350)
    net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1006)
    net.sf.json.JSONObject.fromObject(JSONObject.java:156)
    net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:350)
    net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1006

1 个答案:

答案 0 :(得分:0)

您最好发布您的对象以及用于反序列化它的代码。此外,您可以尝试使用其他库:

杰克逊(更多或更少的标准库):http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

GSON:JSON GSON.fromJson Java Objects