【问题标题】:how to create these servlet data into json format i tried this thing如何将这些 servlet 数据创建为 json 格式我试过这个东西
【发布时间】:2013-11-06 06:50:54
【问题描述】:

这是我的 servlet,我成功地从数据库中读取数据并在浏览器中显示,但我想以 json 格式显示这些数据,谁能告诉我

package com.file;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GetDataTable extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res.setContentType("application/json");
PrintWriter pw = res.getWriter();
Connection con;
Statement stmt;
ResultSet rs;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:java","java","java");
stmt = con.createStatement();
rs = stmt.executeQuery("Select * from SERIESCHART");

pw.println("DATA "+ "VALUE" + "<br>");
while(rs.next())
{
pw.println(rs.getString(1)+" "+rs.getString(2) + "<br>");
}
}
catch (Exception e){
pw.println(e);
}
}
}

【问题讨论】:

  • 您想导出 JSON,但看起来您正在编写 HTML
  • 不,我希望这些 json 数据进入 extjs 网格。在这里我与 db 连接并仅获取该数据。但是我如何将这些数据输入 json 之后我如何将这些数据传递给 extjs

标签: java json servlets


【解决方案1】:

您可以使用json-simple

示例代码

      import org.json.simple.JSONObject;
      JSONObject obj = new JSONObject();

      obj.put("name", "foo");
      obj.put("num",rs.getInt(1));
      obj.put("balance", rs.getString(2));
      obj.put("is_vip", rs.getString(3));

      System.out.print(obj);

【讨论】:

  • 这里 obj.put("name", "foo"); obj.put("num", new Integer(100)); obj.put("余额", new Double(1000.21)); obj.put("is_vip", new Boolean(true));你传递静态数据。但我已经从数据库中动态获取数据。所以,我想将该数据库数据传递到 json 文件中。
  • 我个人是GSON 的粉丝,它需要一个类定义来序列化,但我不介意额外的输入/类。
  • 你可以找到很多教程和文档检查这个code.google.com/p/json-simple
【解决方案2】:

你可以这样做:

...
JsonWriter writer = new JsonWriter(new OutputStreamWriter(res.getOutputStream(), "UTF-8"));
writer.beginArray();
while(rs.next())
{
writer.beginObject();
writer.name("DATA").value(rs.getString(1));
writer.name("VALUE").value(rs.getString(2));
writer.endObject();
}
writer.endArray();
writer.close();
....

这将从 db 中获取您的结果并将 json 表示形式放入响应输出流中

【讨论】:

  • 每当我输入此代码时,输​​出数据都会希望存储系统的某个位置。但实际上我想把这些数据放在 extjs 图表中
  • 如您所见,JsonWriter 是由响应输出流创建的。您可以将其更改为您最擅长的套件
猜你喜欢
  • 2018-07-07
  • 2019-12-04
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多