ObjectOutputStream:在String的开头附加问号

时间:2015-12-07 06:50:13

标签: java json typescript1.6

服务器(Java)将Json String发送到客户端(TypeScript)。在客户端,我得到以下内容:enter image description here

因此,JSON.parse()因附加问号而失败。

我试过了:

  1. 将内容类型设置为 - " text / html"
  2. 将编码设置为 - " UTF-8"
  3. 似乎没有任何东西可以删除它们。

    我的代码:

    public class objectOutput {
    
        static int i=0;
        ObjectOutputStream objectOutputStream;
    
        public objectOutput(HttpServletResponse response)  throws IOException {
    
            response.setContentType("application/octet-stream");
            objectOutputStream = new ObjectOutputStream(response.getOutputStream());  
    
        }
    
        // Using this method to write a Json String
        public void writeObject(Object object) throws IOException {
    
            objectOutputStream.writeObject(object);
            objectOutputStream.close();
            objectOutputStream.flush();       
        }
    }
    

2 个答案:

答案 0 :(得分:1)

基本上,如果您只是尝试发送文字,则不应该使用ObjectOutputStream。这不是它的用途。 ObjectOutputStream以Java特定格式执行二进制序列化,任意可序列化对象。它只应在代码读取数据时使用ObjectInputStream时使用。

在这种情况下,您可能只需拨打response.getWriter(),或者自己在OutputStreamWriter周围创建一个response.getOutputStream()。 (此处通常首选使用getWriter() - 该调用的重点是为文本响应创建一个编写器。)

内容类型与此问题无关,但you should probably change that to application/json

答案 1 :(得分:-1)

您可以尝试使用json格式,如下所示:

public class objectOutput {

static int i=0;
PrintWriter pw;

public objectOutput(HttpServletResponse response)  throws IOException {

    response.setContentType("application/json");
    pw = response.getWriter();  

}

// Using this method to write a Json String
public void writeObject(Object object) throws IOException {

    pw.print(object);
    pw.flush();      
    pw.close(); 
}

}