GSON 的序列化对象未正确结束

问题描述 投票:0回答:1

我有一个 Struts Action,它提供 JSON 数据。 该数据是使用 GSON 从具有基本元素的 POJO 序列化的。

localhost
中,使用 Tomcat 6,系统工作正常,但是当我将应用程序部署到 Weblogic 9 时,servlet 的结果不正常,生成的 JSON 未正确结束(它错过了 })。

这是pojo(我省略了getter和setter)

public class DMTestResponse
{
    private String codiError;
    private String descripcioError;
    private Dades dades = new Dades();

    public class Dades
    {
            private String dada1;
            private String dada2;
            private Integer dada3;
            private String dada4;
    }
}

这是序列化对象的代码部分:

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException
{
    // Some things
    response.setContentType("application/json");
    ServletOutputStream os = response.getOutputStream();
    os.write(resp.toString().getBytes(), 0, resp.length());
    os.flush();
    os.close();
}

来自tomcat的响应是:

{"codiError": "0", "dades": {"dada1":"bla", "dada2":"bla","dada3":"50";"dada4":"text llarg suspensió"}}

但是从weblogic来看,答案是:

{"codiError": "0", "dades": {"dada1":"bla", "dada2":"bla","dada3":"50";"dada4":"text llarg suspensió"}

你可以看到,在weblogic中,最后一个'}'丢失了。

可能是什么原因?

jakarta-ee struts gson weblogic9.x
1个回答
0
投票

不同的服务器可以配置为不同的编码。尝试一下

response.setContentType("application/json; charset=UTF-8");
ServletOutputStream os = response.getOutputStream();
String s = resp.toString();
byte[] ba = s.getBytes("UTF-8");
os.write(ba, 0, ba.length);
os.flush();
© www.soinside.com 2019 - 2024. All rights reserved.