当前位置: 首页 > 知识库问答 >
问题:

如何序列化java.util。使用Gson Library向Json列出?

乜心思
2023-03-14

在我的servlet中,我有以下代码:

    response.setContentType("application/json");//set json content type
    PrintWriter out = response.getWriter();

   EntityManagerFactory emf=Persistence.createEntityManagerFactory("webPU");
   GpsJpaController gjc=new GpsJpaController(emf);    
   java.util.List<Gps> listGps=gjc.findGpsEntities();//retrieve the list of GPS from DB 

   Gson gson=new Gson();
   String json=gson.toJson(listGps); //convert List<Gps> to json
   out.println(json);

响应从 Ajax 返回,代码如下:

$.ajax({ 
           type: "GET", 
           url: "getInfoGeoActive",
           dataType: 'json',
           error: function(xhr, ajaxOptions, thrownError){ $("#content").empty().append("* Error from server cause: "+thrownError).addClass("error"); } ,
           success:function(data){$("#content").empty().append(data);}
             });

当我运行代码时,我仍然收到以下错误(来自 ajax):

  Error from server cause:Internal Servlet Error

我还尝试显示序列化对象<code>List

EntityManagerFactory emf=Persistence.createEntityManagerFactory("JavaApplication21PU");
        GpsJpaController gjc=new GpsJpaController(emf);
        java.util.List<Gps> listGps=gjc.findGpsEntities();

        Gson gson=new Gson();
        String json=gson.toJson(listGps);

        System.out.println(json);

我收到此错误:

Exception in thread "main" java.lang.StackOverflowError
    at java.lang.StrictMath.floorOrCeil(StrictMath.java:355)
    at java.lang.StrictMath.floor(StrictMath.java:340)
    at java.lang.Math.floor(Math.java:424)
    at sun.misc.FloatingDecimal.dtoa(FloatingDecimal.java:620)
    at sun.misc.FloatingDecimal.<init>(FloatingDecimal.java:459)
    at java.lang.Double.toString(Double.java:196)
    at java.lang.Double.toString(Double.java:633)
    at com.google.gson.stream.JsonWriter.value(JsonWriter.java:441)
    at com.google.gson.Gson$4.write(Gson.java:270)
    at com.google.gson.Gson$4.write(Gson.java:255)

请帮帮忙!

编辑:这个问题的最终解决方案

共有2个答案

姜献
2023-03-14

看起来您的 GPS 对象包含对自身的引用。

孙胜泫
2023-03-14

StackOverflowException是由于无限递归而发生的。您可能需要彻底检查代码是否存在任何意外递归。

 类似资料:
  • 我有。我试图将其写入一个JSON文件,并从该文件中读取。 变量如下所示: 当然,当我将序列化为JSON时,我希望结果如下。 上面的JSON结果可以通过非常直接的方式使用Gson生成,但是当它被馈送相同的JSON字符串去序列化时,就会失败。 与杰克逊一起尝试过: 最后一行抛出错误: 通用域名格式。fasterxml。杰克逊。数据绑定。JsonMappingException:java。util。属性

  • 问题内容: 我是C ++的新手。使用序列化和反序列化类型数据的最简单方法是什么。我发现了一些使用示例,但它们对我来说是晦涩的。 问题答案: 请注意,将键解释为路径,例如,将对“ ab” =“ z”放置将创建{“ a”:{“ b”:“ z”}} JSON,而不是{“ ab”:“ z”} 。否则,使用是微不足道的。这是一个小例子。

  • 问题内容: 我很好奇序列化和反序列化的方式。我使用关键字“ json”和“ tuple”进行搜索,但找不到所需的内容。 问题答案: 我通过和Json.net进行测试,测试代码如下。结果显示可序列化和可反序列化。因此,我可以在应用程序中使用它们。 测试代码 注释 在将序列化到字符串{“项目1”:“一”,“项目2”:“嘻嘻”,“项目3”:真正},并且它可以被反序列化回类型。

  • 问题内容: 我有此JSON,但无法弄清楚如何将其转换为C#中的对象列表。 这是JSON: 我尝试使用的代码: 无济于事。如何使用Newtonsoft的JSON库(Json.Net)将JSON反序列化为这些对象的列表? 问题答案: 您可以使用

  • 问题内容: 我正在尝试使Django函数进行JSON序列化并将其返回到对象中。 我正在这样使用它: 但是我得到这个错误: 有任何想法吗? 编辑:这是回溯: http://dpaste.com/38786/ 问题答案: 更新:Python现在拥有自己的json处理程序,只需使用即可代替。 Django序列化器模块旨在序列化Django ORM对象。如果要对常规Python字典进行编码,则应使用sim

  • 问题内容: 如何使类可序列化? 一个简单的类: 我应该怎么做才能获得以下输出: 问题答案: 你对预期的输出有想法吗?例如这样做吗? 在这种情况下,你只能致电。 如果你想要更多的自定义输出,则必须继承并实现自己的自定义序列化。 有关一个简单的示例,请参见下文。 然后,将该类作为 传递给方法: 如果你也想解码,那么你将有一个自定义供应类。例如