json詳解

JSON詳解

 

JSON的全稱是」JavaScript Object Notation」,意思是JavaScript對象表示法,它是一種基於文本,獨立於語言的輕量級數據交換格式。XML也是一種數據交換格式,爲何沒 有選擇XML呢?由於XML雖然能夠做爲跨平臺的數據交換格式,可是在JS(JavaScript的簡寫)中處理XML很是不方便,同時XML標記比數據 多,增長了交換產生的流量,而JSON沒有附加的任何標記,在JS中可做爲對象處理,因此咱們更傾向於選擇JSON來交換數據。這篇文章主要從如下幾個方 面來講明JSON。javascript

1,JSON的兩種結構
2,認識JSON字符串
3,在JS中如何使用JSON
4,在.NET中如何使用JSON
5,總結java

{
    key1:value1,
    key2:value2,
    ...
}

 

其中關鍵字是字符串,而值能夠是字符串,數值,true,false,null,對象或數組mysql

 

數組結構以」[」開始,」]」結束。中間由0或多個以」,」分隔的值列表組成,語法結構如代碼。web

[
    {
        key1:value1,
        key2:value2 
    },
    {
         key3:value3,
         key4:value4   
    }
]

認識JSON字符串sql

以前我一直有個困惑,分不清普通字符串,json字符串和json對象的區別。通過一番研究終於給弄明白了。好比在js中。數據庫

字符串:這個很好解釋,指使用「」雙引號或’’單引號包括的字符。例如:var comStr = 'this is string';
json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}";
json對象:指符合json格式要求的js對象。例如:var jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" };json

var obj = {
            1: "value1",
            "2": "value2",
            count: 3,
            person: [ //數組結構JSON對象,能夠嵌套使用
                        {
                            id: 1,
                            name: "張三"
                        },
                        {
                            id: 2,
                            name: "李四"
                        }
                   ],
            object: { //對象結構JSON對象
                id: 1,
                msg: "對象裏的對象"    
            }
        };

1,從JSON中讀數據數組

function ReadJSON() {
            alert(obj.1); //會報語法錯誤,能夠用alert(obj["1"]);說明數字最好不要作關鍵字
            alert(obj.2); //同上

            alert(obj.person[0].name); //或者alert(obj.person[0]["name"])
            alert(obj.object.msg); //或者alert(obj.object["msg"])
        }

2,向JSON中寫數據post

好比要往JSON中增長一條數據,代碼以下:this

function Add() { //往JSON對象中增長了一條記錄 obj.sex= "男" //或者obj["sex"]="男" }

 

 

3,修改JSON中的數據

 

咱們如今要修改JSON中count的值,代碼以下:

 

function Update() { obj.count = 10; //或obj["count"]=10 }

 

修改後的JSON如圖。

 

4,刪除JSON中的數據

咱們如今實現從JSON中刪除count這條數據,代碼以下:

function Delete() { delete obj.count; }

刪除後的JSON如圖

能夠看到count已經從JSON對象中被刪除了。

5,遍歷JSON對象

可使用for…in…循環來遍歷JSON對象中的數據,好比咱們要遍歷輸出obj對象的值,代碼以下:

function Traversal() { for (var c in obj) { console.log(c + ":", obj[c]); } }

程序輸出結果爲:

1,經過序列化將.net對象轉換爲JSON字符串

在web開發過程當中,咱們常常須要將從數據庫中 查詢到的數據(通常爲一個集合,列表或數組等)轉換爲JSON格式字符串傳回客戶端,這就須要進行序列化,這裏用到的是JsonConvert對象的 SerializeObject方法。其語法格式爲:JsonConvert.SerializeObject(object),代碼中 的」object」就是要序列化的.net對象,序列化後返回的是json字符串。

好比,如今咱們有一個TStudent的學生表,表中的字段和已有數據如圖所示

從表中咱們能夠看到一共有五條數據,如今咱們要從數據庫中取出這些數據,而後利用JSON.Net的JsonConvert對象序列化它們爲json字符串,並顯示在頁面上。C#代碼以下

protected void Page_Load(object sender, EventArgs e)
        {
            using (L2SDBDataContext db = new L2SDBDataContext())
            {
                List<Student> studentList = new List<Student>();
                var query = from s in db.TStudents
                            select new { 
                                StudentID=s.StudentID,
                                Name=s.Name,
                                Hometown=s.Hometown,
                                Gender=s.Gender,
                                Brithday=s.Birthday,
                                ClassID=s.ClassID,
                                Weight=s.Weight,
                                Height=s.Height,
                                Desc=s.Desc
                            };
                foreach (var item in query)
                {
                    Student student = new Student { StudentID=item.StudentID,Name=item.Name,Hometown=item.Hometown,Gender=item.Gender,Brithday=item.Brithday,ClassID=item.ClassID,Weight=item.Weight,Height=item.Height,Desc=item.Desc};
                    studentList.Add(student);
                }
                lbMsg.InnerText = JsonConvert.SerializeObject(studentList);
            }
        }
相關文章
相關標籤/搜索