1. 程式人生 > >SpringMVC返回JSON資料的坑

SpringMVC返回JSON資料的坑

測試一:

@RequestMapping(value = "/test1", method = RequestMethod.POST)
    @ResponseBody
    public Person test1() {
        Person person = new Person();
        person.setName("熙雅");
        person.setAge(24);
        person.setBirth(new Date());
        person.setId(1);
        person.setEmail("[email protected]
"
); return person; }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="static/js/jquery-3.2.1.min.js"></script>
    <title>學習</title>
    <script>
        $(function () {
          $.post("http://localhost:8080/SSMCRUD/test1"
, function(data) { // data = eval("(" + data+ ")"); $('#name').val(data.name); $('#age').val(data.age); }); });
</script> </head> <body> <input type="text" id="name"/> <input type="text" id="age"/> </body
>
</html>

當返回物件時,我們不需要使用 eval()來將json字串轉化為javascript物件。
測試1

如上圖所示,返回的是標準的json字串格式。

測試二

@RequestMapping(value = "/test1", method = RequestMethod.POST)
    @ResponseBody
    public String test1() {
        Person person = new Person();
        person.setName("熙雅");
        person.setAge(24);
        person.setBirth(new Date());
        person.setId(1);
        person.setEmail("[email protected]");
        String json = com.alibaba.fastjson.JSON.toJSONString(person);
        System.out.println(json);
        return json;
//      return "{\"name\":\"熙雅\",\"age\":24}";
    }

此時,返回的json字串的格式:

“{\”age\”:24,\”birth\”:1499759417522,\”email\”:\”[email protected]\”,\”id\”:1,\”name\”:\”熙雅\”}”

所以需要eval()函式解析:

<script>
        $(function () {
            $.post("http://localhost:8080/SSMCRUD/test1", function(data) {
                data = eval("(" + data+ ")");
                $('#name').val(data.name);
                $('#age').val(data.age);
            });
        });
    </script>

data = eval(“(” + data+ “)”);

為什麼eval這裡要括號?
由於json是以{ }的方式來開始以及結束的,在eval中會被當成一個語句塊來處理,故必須強制將它轉換成一種表示式。
加上圓括號是使eval函式在處理時強制將括號內的表示式(expression)轉化為物件而不作為語句(statement)來執行。

alert(eval(“{}”));//undefined
alert(eval(“({})”));//[Object,Object]

相關推薦

SpringMVC返回JSON資料

測試一: @RequestMapping(value = "/test1", method = RequestMethod.POST) @ResponseBody public P

Springmvc返回json資料

SpringMvc返回json型別資料有以下幾種方式(個人都使用過): 1、在方法上使用@ResponseBody註解      需要引入jackson依賴包。 <dependency> <groupId>com.fasterx

SpringMVC返回json資料的三種方式

1、第一種方式是spring2時代的產物,也就是每個json檢視controller配置一個Jsoniew。 如:<bean id="defaultJsonView" class="org.springframework.web.servlet.view.json

【Spring】SpringMVC返回json資料的三種方式

歡迎關注公眾號: ----------------------------------------------正文---------------------------------------------------- 方式一:使用JSON工具將物件序列化成j

springMVC返回json資料時date型別資料被轉成long型別

在專案的過程中肯定會遇到ajax請求,但是再用的過程中會發現,在資料庫中好好的時間型別資料:2017-05-04 17:52:24 在轉json的時候,得到的就不是時間格式了 而是145245121這

Springmvc 返回json資料,填充html 或 jsp頁面。

maven pom.xml: <!-- net json --> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId&g

SpringMVC返回json資料的配置

1、第一種方式是spring2時代的產物,也就是每個json檢視controller配置一個Jsoniew。 如: <bean id="defaultJsonView" class="org.springframework.web.servlet.

SpringMVC返回JSON資料date日期格式化,解決返回為TIMESTAMP時間戳格式

資料庫中使用的是timestamp型別,在po類裡面屬性的格式為Date型別,但是在返回json字串的時候,卻是返回的是long型別的資料,這個不是我們需要的資料型別,之前一直想著前端使用js直接格式化一下就好了,但是前端說只做資料的展示,不做資料的處理,好吧,

SpringMVC返回json資料格式(返回值作為響應體)

       本文探討了基於註解方式的SpringMVC(3.1版本以上)返回值(響應體)的型別的探討,由於xml格式解析的複雜化和js平臺支援狀況,下面主要探討了基於返回json格式資料的返回值型別的問題,可以返回三種類型的資料會被轉換為json格式,第一種:Map型別;

解決SpringMVC返回Json資料格式不嚴謹報異常的問題(草稿未完成)

週末除錯程式的時候發現的該問題,表現如下:      當springmvc配合jackson返回json資料不是嚴格按照json格式返回時,如服務端返回:{“age":20}      同域請求不報錯,瀏覽器直接請求也不報錯可以正常返回,但跨域用jquery請求時會報一個unexpected end of

SpringMVC返回json資料的日期格式統一轉換

有時候我們做介面時候,返回json的資料,controller層的方法用@ResponseBody註解,方法返回的是一個bean,bean裡面可能有個從資料庫獲取的資料map,如果有日期格式的欄位,可能返回的是時間戳的日期。 解決方法有兩種 1.增加map xml的資料

springmvc返回json資料去除null值

package com.xilehang.kaola.po.orderConfirm; import com.fasterxml.jackson.databind.annotation.JsonSerialize; //轉json是排除null @SuppressWar

SpringMVC返回json資料的配置方式

spring mvc 返回json格式資料的方式主要有三種:  1、使用JSON工具將物件序列化成json,常用工具Jackson,fastjson,gson。 利用HttpServletResponse,然後獲取response.getOutputStream()或response.getWrite

SpringMVC 返回json資料的三種方式

1、第一種方式是spring2時代的產物,也就是每個json檢視controller配置一個Jsoniew。 如:<bean id="defaultJsonView" class="org.springframework.web.servlet.view.json

關於springmvc 返回json資料null欄位的顯示問題

最近做專案(ssm框架)的時候,發現從後臺返回的json(fastjson)資料對應不上實體類,從資料庫查詢的資料,如果對應的實體類的欄位沒有資訊的話,json資料裡面就不顯示,這不是我想要的結果,準確說是前端頭疼的事情,然後我看了一下fastjson的配置,最後解決了現

SpringMVC 使用ResponseBody 返回json資料

1.Ctroller 添加註解@ResponseBody 2.pom.xml檔案新增兩個引入包 <!-- Jsckson -->         <dependency>    &n

SpringMVC返回JSON資料時出現406錯誤解決方案

       在SpringMVC框架的使用中常常會使用@ResponseBody註解,修飾“處理器”(Controller的方法),這樣在處理器在返回完畢後,就不走邏輯檢視,而是將返回的物件轉成JSON字串響應給客戶端,但這種操作有時會出現406錯誤。

SpringMVC返回Json資料亂碼問題

一、前言 在前面的文章中,小編曾介紹過java在程式設計的過程中資料亂碼的問題。大部分情況是由於資料的格式不對應,最近接手的專案中,使用的是springmvc,同樣也出現了亂碼的問題。 二、情況介紹 springmvc 返回json 三、具體情況 如

springmvc(ajax呼叫)返回json資料

如下: @RequestMapping(value = "/data", method = RequestMethod.POST) @ResponseBody public User data() { User user = new User(); user.setUser

springmvcjson資料互動controller方法返回值為簡單型別

當controller方法的返回值為簡單型別比如String時,該如何與json互動呢? 使用@RequestBody 比如程式碼如下: @RequestMapping(value="/ceshijson",produces="application/