0

JavaScript に JSON 文字列が含まれています。これを Java クラスに送信する必要があります。プレーンな Java クラスを使用できますか、それともサーブレットを使用する必要がありますか?

また、JSON データを解析するにはどうすればよいですか?

私のJSONデータは次の形式です:

 var details=   { "CustomerDetails": [{'name':'Amy','age':'23'},
{'name':'Amj','age':'25'},{'name':'Amg','age':'27'}]};

次のようなjson文字列を送信します。

  var jsonText = JSON.stringify(details);  

    $.post('ServletClass', jsonText);  

Web.xml:

<servlet>
<servlet-name>ServletClass</servlet-name>
<display-name>ServletClass</display-name>
<servlet-class>java.files.ServletClass</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletClass</servlet-name>
<url-pattern>/ServletClass</url-pattern>
</servlet-mapping>

私のサーブレット側: system.out.println を実行しようとしましたが、何も得られません。転送は適切に行われていますか?

package XXXX;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.files.JSONObject;
import java.files.JSONSerializer;

public class ServletClass extends HttpServlet {
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

  }

  public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
      //          doGet(request, response);
      //JSONArray arrayObj = new JSONArray();
      JSONObject jsonObj = new JSONObject(jsonText);
      JSONArray the_
      json_array = jsonObj.getJSONArray("CustomerDetails");
      System.out.println("FINALLY HERE");



  }
}
4

2 に答える 2

2

まず、JSON が正しくありません。修正された JSON:

{ "CustomerDetails": [{'name':'Amy','age':'23'},{'name':'Amj','age':'25'},{'name':'Amg','age':'27'}]}

データを非同期にしたい場合は、AJAX を使用して Java クラスにデータを送信する必要があります。このリクエストを受け入れるにはサーブレットが必要です。サーブレットはこの JSON を解析し、必要な処理を行うことができます。JSON 解析を行うには、 JacksonまたはGSONライブラリを参照してください。

于 2012-07-31T19:51:04.850 に答える
0

次の変更が機能しました: fullpath = contextpath \ servletname

$.post(fullpath, {jsonText:jsonText}, function(data) {
    alert(data);
});
于 2012-08-06T15:04:20.430 に答える