java - 新行,双引号在 json 数据中给出错误

标签 java json jsf-2 newline double-quotes

我正在 JSF 中手动创建 JSON 数据。

以下是我正在做的事情并且工作完美。

JSF 页面

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:body>
        <ui:composition
            xmlns:f="http://java.sun.com/jsf/core"
            xmlns:ui="http://java.sun.com/jsf/facelets">
            <f:event type="preRenderView" listener="#{MobileLogin.fetNewsData()}" />
        </ui:composition>
    </h:body>
</html>

MobileLogin.java

public void fetNewsData() {
    try {
        ConnectToDatabase db = new ConnectToDatabase();
        Connection conn = db.makeconnection();
        PreparedStatement psmt = conn.prepareStatement("SELECT * FROM news ORDER BY id DESC");
        ResultSet rs = psmt.executeQuery();

        String json = "[";
        int myTotal = 0;
        String myDate = "";
        while (rs.next()) {
            System.out.println("test 002 - " + rs.getString(1));
            if (myTotal >= 1) {
                json = json + ",";
            }
            myDate = rs.getString(4);
            myDate = myDate.substring(8, 10) + "-" + myDate.substring(5, 7) + "-" + myDate.substring(0, 4);
            json = json + "{"
                    + "\"id\": \"" + rs.getString(1) + "\","
                    + "\"title\": \"" + rs.getString(2) + "\","
                    + "\"detailMessage\": \"" + rs.getString(3) + "\","
                    + "\"whenAdd\": \"" + myDate + "\""
                    + "}";
            myTotal++;
        }
        json = json + "]";

        // Show it.
        myNewsInJSONFormat = json.toString();
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ExternalContext externalContext = facesContext.getExternalContext();
        externalContext.setResponseContentType("application/json");
        externalContext.setResponseCharacterEncoding("UTF-8");
        externalContext.getResponseOutputWriter().write(myNewsInJSONFormat);
        facesContext.responseComplete();
        System.out.println("fina data is " + myNewsInJSONFormat);

        if (conn!=null) {
            conn.close();
        }

    } catch (Exception e) {
        myNewsInJSONFormat = "";
    }
}

一切都工作得很好,但是当我在文本中有换行和双引号时(尤其是在detailMessage处),就会出现问题。

换行和双引号有什么解决方法吗?

<小时/>

示例 JSON 数据如下..(带双引号和换行符)

[{"id": "6","title": "We can make iPhone app too now...","detailMessage": "Yes!!! You heard it "right"...

We can make iPhone app too with website....","whenAdd": "11-08-2013"}]

最佳答案

StringEscapeUtils.escapeJavaScript()成功了。

下面是我的代码

+ "\"detailMessage\": \"" + StringEscapeUtils.escapeJavaScript(rs.getString(3)) + "\","
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

关于java - 新行,双引号在 json 数据中给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18227432/

相关文章:

jsf-2 - 复合组件所需属性在 Mojarra 2.0.3 中引发异常

java - panic :无法打开:¨8W

java - 重命名 TableRow 属性名称

apache 上的 Android JSON 解析错误

java - JSF 中不同组件的 ManagedBeans

java - 如何在 JSF 页面中包含 servlet

java - Android Studio LibGDX 游戏问题

java - 检测到死锁时 Hibernate session 不同步

java - openCV将Mat转换为灰度图像

python - 如何在 python 中将 Avro 文件转换为 CSV 文件?