如何将json从java传递到javascript函数

Posted

技术标签:

【中文标题】如何将json从java传递到javascript函数【英文标题】:How to pass json from java to javascript function 【发布时间】:2017-11-10 04:17:32 【问题描述】:

我从我的数据库中创建了一个 json 字符串,我想将它传递给我的 javascript 函数,并将其打印到一个 html 表中。我使用角度来轻松打印表格,但我不知道如何将数据从 java 发送到 javascript。 这些是我在 java 中尝试过的。

public void jsonRetr (String numeRepo) throws SQLException 
    String sql = "SELECT * FROM " + numeRepo;
    PreparedStatement prStm = (PreparedStatement) conn.prepareStatement(sql);
    ResultSet rs = prStm.executeQuery(sql);
    ArrayList<PersoaneJSON> persoane = new ArrayList<PersoaneJSON>();

    while (rs.next()) 
        String id = rs.getString("id");
        String login_name = rs.getString("login_name");
        String email = rs.getString("email");
        String public_gits = rs.getString("public_gits");
        String Html_profile = rs.getString("Html_profile");
        String Avatar_URL = rs.getString("Avatar_URL");

        PersoaneJSON persoana = new PersoaneJSON(id, login_name, email, public_gits, Html_profile, Avatar_URL);
        persoane.add(persoana);
    
    Gson gson = new Gson();
    String json = gson.toJson(persoane);
    

这些是我在 javascript 中尝试过的。

    var employeeApp = angular.module("EmployeeApp",[]);
    employeeApp.controller("empCtrl",function($scope)
    $scope.query = 
    $scope.queryBy = '$'
    $scope.employees = [];
    $scope.orderProp="name";                
  );

【问题讨论】:

到目前为止,您实际上并没有发送任何内容,但使用 Gson 进行格式化就足够了。 那么我该如何处理数据,这对我来说是个问题,因为我是初学者,我不知道如何开始@M.Prokhorov 【参考方案1】:

我对你的代码做了一些修改(你可以应用你喜欢的任何东西)

public ArrayList<PersoaneJSON> jsonRetr (String numeRepo) throws SQLException 
    String sql = "SELECT * FROM " + numeRepo;
    PreparedStatement prStm = (PreparedStatement) conn.prepareStatement(sql);
    ResultSet rs = prStm.executeQuery(sql);
    ArrayList<PersoaneJSON> persoane = new ArrayList<PersoaneJSON>();

    while (rs.next()) 
        String id = rs.getString("id");
        String login_name = rs.getString("login_name");
        String email = rs.getString("email");
        String public_gits = rs.getString("public_gits");
        String Html_profile = rs.getString("Html_profile");
        String Avatar_URL = rs.getString("Avatar_URL");

        PersoaneJSON persoana = new PersoaneJSON(id, login_name, email, public_gits, Html_profile, Avatar_URL);
        persoane.add(persoana);
    
   return persoane;

这里是 Servlet doGet 方法。

  protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException 

            PrintWriter out = response.getWriter();


                response.setContentType("application/json;charset=utf-8");


                Gson gson = new Gson();
        String json = gson.toJson(jsonRetr("xyz"));

                out.write(json);
                out.close();

    

使用 jquery 并按如下方式读取您的 json 对象

$.getJSON( "Action/Servlet", function( data ) 
    console.log(JSON.parse(data));
);

【讨论】:

您也可以尝试java2s.com/Code/Jar/j/Downloadjsonsimple11jar.htm 将您的对象解析为json。【参考方案2】:

您必须使用带有 WebMethod 的 Java Servlet,因此调用可以返回包含数据的 JSON 对象的方法。

示例 Java 代码:

ApplicationConfig.java

package example;
import java.util.Set;
import javax.ws.rs.core.Application;

@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application

  @Override
  public Set<Class<?>> getClasses() 
    Set<Class<?>> resources = new java.util.HashSet<>();
    resources.add(QueryResource.class);
    return resources;
  

QueryResource.java

package example;


@Path("query")
@Produces(MediaType.TEXT_PLAIN)
public class QueryResource           

    @GET
    @Path("/employee")
    public String jsonRetr() throws Exception 
        ..
        return json;
    

现在在 js 中,您可以在控制器内部创建一个函数来连接到 Servlet,将 $http 对象传递给控制器​​,如 $scope。

$http.get("http://localhost:8086/example/webresources/query/employee").success(function (data) 
                console.log(JSON.parse(data));
            ).error(function () 
                console.error('error');
            );

在您的 web.xml 中,您必须设置如下配置:

<servlet-mapping>
    <servlet-name>RESTServlet</servlet-name>
    <url-pattern>/webresources/*</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>RESTServlet</servlet-name>        
   <servletclass>org.glassfish.jersey.servlet.ServletContainer</servletclass>
        <init-param>
          <param-name>javax.ws.rs.Application</param-name>
          <param-value>example.ApplicationConfig</param-value>
        </init-param>
        </servlet>

你需要这些依赖:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.26-b01</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.26-b01</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>compile</scope>
 </dependency>

希望对你有帮助

【讨论】:

以上是关于如何将json从java传递到javascript函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从javascript传递到json

如何将 json 数据从 ruby​​ 控制器传递到 javascript (Rails 6.1)?

java 我通过后台传递一个json数组到前台,如何从javascript中 获取到

如何将 json 从 JavaScript 传递到 iPad 原生应用程序?

将 JSON 从 php 传递到 javascript

如何将 Json 数据从 javaScript 发送到 Flask