この記事では、Spring mvc で json データを受け取る方法をコード例を通して紹介します。
JSON を受信
フロントエンドで @RequestBody アノテーションを使用するには、フォーマットされた JSON をコントローラーに送信するだけで済みます。Spring はそれを自動的に Bean にアセンブルします。
1) 上記のプロジェクトで JSON を返す最初のメソッドの使用に基づいて、次のメソッドを追加します。
Java コード
@RequestMapping(value="/add",method=RequestMethod.POST, headers = {"content-type=application/json","content-type=application/xml"}) @ResponseBody public Object addUser(@RequestBody User user) { System.out.println(user.getName() + " " + user.getAge()); return new HashMap<String, String>().put("success", "true"); }
ここでの POJO は次のとおりです:
Java コード
public class User { private String name; private String age; //getter setter }
2) フロントエンドでは、jQuery を使用して JSON を処理できます。ここから、フォームのデータを JSON オブジェクトに返すことができる jQuery プラグインを取得しました。
Js コード
$.fn.serializeObject = function(){ var o = {}; var a = this.serializeArray(); $.each(a, function(){ if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; };
以下は、jQuery を使用して JSON を送受信するためのコードです:
Js コード
$(document).ready(function(){ jQuery.ajax({ type: 'GET', contentType: 'application/json', url: 'jsonfeed.do', dataType: 'json', success: function(data){ if (data && data.status == "0") { $.each(data.data, function(i, item){ $('#info').append("姓名:" + item.name +",年龄:" +item.age); }); } }, error: function(){ alert("error") } }); $("#submit").click(function(){ var jsonuserinfo = $.toJSON($('#form').serializeObject()); jQuery.ajax({ type: 'POST', contentType: 'application/json', url: 'add.do', data: jsonuserinfo, dataType: 'json', success: function(data){ alert("新增成功!"); }, error: function(){ alert("error") } }); }); });
しかし、Spring を使うのは、Jersey の RESTful 実装に比べて、確かに簡潔でないことがたくさんあります。
上記は、この記事で共有された Spring mvc の JSON データ受信に関する関連情報です。