2015-12-07 29 views
0

服務器(Java)將Json字符串發送到客戶端(TypeScript)。在客戶端上我得到以下內容:enter image description hereObjectOutputStream:在字符串的開頭附加問號

因此JSON.parse()由於追加問號而失敗。

我想:

  1. 內容類型設置爲 - 「text/html的」
  2. 設置編碼來 - 「UTF-8」

並沒有什麼似乎刪除這些。

我的代碼:

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();  
    } 
} 

回答

1

基本上,你不應該使用ObjectOutputStream如果你只是想發送文本。這不是它的目的。 ObjectOutputStream以任意可序列化對象的Java特定格式執行二進制序列化。它只能用於代碼讀取的數據也是Java,使用ObjectInputStream

在這種情況下,您應該只需撥打response.getWriter()即可,或者自行創建OutputStreamWriterresponse.getOutputStream()。 (使用getWriter()這裏一般首選 - 該呼叫的整點是創建文本響應作家。)

內容類型無關的這個問題,但you should probably change that to application/json

-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(); 
} 

} 
+0

這不會產生JSON。你還沒有嘗試過。 – EJP

+0

是的。提供對象需要是JSONObject。 @EJP。 – additionster

+0

所以方法的簽名應該是'(JSONObject),'not'(Object)?'否則你只需要得到對象的'toString()'方法的結果,而不是主要的JSON。 – EJP

相關問題