ASP.NET MVC Framework - JSON

ASP.NET MVC Framework - JSON

LAVI

JSON

JSON:JavaScript Object Notation

JSON 是一種輕量級資料交換格式
JSON 是純文字,無關任何程式語言
JSON 長得和 JavaScript 的 Object 差不多,只是在傳值時會先序列化成文字,要使用時再反序列化

JavaScript Object

由 key 和 value 組成

1
2
3
4
5
6
7
8
9
10
var myData = {
"BookId" : 123,
"BookName" : "Harry Potter",
"BookAuthor" : "J.K. Rowling"
}

// 使用物件取值時可寫
myData.BookName

// 就可以得到輸出:'Harry Potter'

Serialization & Deserialization

Serialization:序列化

資料從前端傳到後端時,不能直接用 JavaScript Object
所以可以在 JavaScript 用 JSON.stringify() 將其轉為序列化的型態

1
2
3
4
JSON.stringify(myData)

// myData 輸出
'{"BookId":123, "BookName":"Harry Potter", "BookAuthor":"J.K. Rowling"}'

後端收到後,可再把此段序列化 JSON 轉為該語言使用的形式

Deserialization:反序列化

而資料從後端傳到前端時,可在 JavaScript 使用 JSON.parse() 將其反序列化,轉回 JavaScript Object 的形式
假設現在將方才轉換成序列化的 myData 重新反序列化

1
2
3
4
5
6
JSON.parse(myData)

// myData 轉回
"BookId" : 123
"BookName" : "Harry Potter"
"BookAuthor" : "J.K. Rowling"

JsonResult

可以在 Controller 中透過撰寫 JsonResult 回傳 JSON 形式的資料

1
2
3
4
5
6
7
8
9
10
11
12
13
[HttpPost()]
public JsonResult Test()
{
try
{
return this.Json(true);
}

catch (Exception ex)
{
return this.Json(false);
}
}

Summery

  1. 前端傳資料給後端,沒辦法直接傳 Object 給 Server,因此會先序列化 Object 成文字
  2. 沒辦法直接把 Object 存進 LocalStorage、DataBase,因此會先序列化 Object 成文字
  3. 前端拿到後端回傳的 JSON 資料,想要進一步用 JavaScript 操作,要先反序列化成 Object