2011-06-27 62 views

Trả lời

50

Một Javascript đối tượng là loại dữ liệu trong Javascript - chỉ có ý nghĩa trong Javascript. Thông thường bạn sẽ thấy một đối tượng Javascript đen như thế này:

var obj = { 
    a: 1, 
    b: 2 
}; 

Một JSON chuỗi là một định dạng trao đổi dữ liệu - đó là gì khác hơn là một loạt các ký tự định dạng một cách đặc biệt (theo thứ tự cho các chương trình khác nhau để giao tiếp với nhau). Bởi vì điều này, nó có thể tồn tại bên trong Javascript, hoặc trong một ngôn ngữ khác hoặc đơn giản là được lưu trữ bên trong một cơ sở dữ liệu hoặc một tập tin văn bản.

Trên đây Javascript đối tượng có thể được biểu diễn trong các định dạng JSON trong Javascript như thế này:

var json = '{ "a": 1, "b": 2 }'; 

Hoặc trong C# như thế này:

string json = "{ \"a\": 1, \"b\": 2 }"; 

Như bạn có thể thấy, một JSON chỉ đơn giản là lưu trữ bên trong một chuỗi. Để làm cho nó hữu ích, chuỗi JSON có thể được phân tích để tạo một đối tượng bằng bất kỳ ngôn ngữ nào. Bởi vì đối tượng JSON định dạng bắt chước Javascript của cú pháp theo nghĩa đen, Javascript làm cho quá trình phân tích cú pháp đơn giản:

var obj = eval('(' + json + ')'); 

Mặc dù thường bạn sẽ thấy:

var obj = JSON.parse(json); // for security reasons 

Lưu ý rằng JSON được giới hạn ở chỗ nó không thể chức năng lưu trữ - các giá trị duy nhất mà nó có thể chứa là:

  • đối tượng (literals)
  • mảng
  • số
  • boolean
  • chuỗi
  • null
+3

Sự khác biệt chính giữa JSON và đối tượng Javascript là "JSON string là một định dạng trao đổi dữ liệu" và đối tượng Javascript là một kiểu dữ liệu trong Javascript – neelmeg

14

JSON là phần trình bày văn bản của đối tượng javscript. Nó có hiệu quả là một đối tượng theo nghĩa đen trong ký pháp javascript (do đó tên - JavaScript Object Notation => JSON).

Nếu bạn muốn "so sánh" hai đối tượng, hãy chuyển văn bản thành đối tượng, sau đó so sánh khóa và giá trị.

Một số ví dụ của các đối tượng đến/từ văn bản:

// Create obj using an object literal 
var obj = {key: 'value'}; 

// Convert to text using JSON.stringify 
var text = JSON.stringify(obj); 

// Show the value of text 
alert(text); // {"key":"value"} 

// Create a new object from text 
var newObj = JSON.parse(text); // javascript object 

// Show the text version of newObj 
alert(JSON.stringify(newObj)); // {"key":"value"} 

// Use text as code 
var newObj2 = eval('(' + text + ')'); 

// It is indeed a string literal 
alert(JSON.stringify(newObj2)); // {"key":"value"} 

Nếu bạn muốn so sánh hai đối tượng, chuyển đổi chúng từ JSON để các đối tượng (nếu họ là JSON ở nơi đầu tiên) sau đó làm điều gì đó như:

function compareObjects(a, b) { 
    var i, p, aProps = [], bProps = []; 

    // Simple test first 
    if (a === b) { 
    return true; 
    } 

    // Get properties of a 
    for (p in a) { 
    if (a.hasOwnProperty(p)) { 
     aProps.push(p); 
    } 
    } 

    // Get properties of b 
    for (p in b) { 
    if (b.hasOwnProperty(p)) { 
     bProps.push(p); 
    } 
    } 

    // If don't have same properties, return false 
    if (aProps.sort().join('') != bProps.sort().join('')) { 
    return false; 
    } 

    // If property values aren't the same, return false 
    i = aProps.length; 
    while (i--) { 
    if (a[aProps[i]] !== b[bProps[i]]) { 
     return false; 
    } 
    } 

    // If passed all tests, must be equal 
    return true; 
} 
+0

vâng tôi đã đọc that..i không có được một ví dụ khai của cả hai anywhere..i muốn so sánh chúng và xem những gì khác nhau? – Refti

+2

Chỉnh sửa câu hỏi của bạn để bao gồm điều đó. – RobG

+1

Lưu ý: "var obj =" KHÔNG phải là một phần của JSON! Về mặt kỹ thuật, JSON chỉ là dữ liệu mặc dù nó có xu hướng được thực thi như thể nó là mã để nạp một đối tượng trong bộ nhớ. Bạn chỉ cần {} và nội dung ở giữa là dữ liệu JSON, sau đó bạn có thể 'đánh giá' và gán cho một biến trong mã JavaScript của bạn hoặc ngôn ngữ lập trình khác. Thêm điều "var" biến JSON thành Javascript ... –

3

JSON đứng cho "JavaScript Object Notation".Về cơ bản, JSON là Javascript, nhưng giới hạn chỉ cần điền một đối tượng với dữ liệu. Bằng cách thực hiện một đối tượng JSON, bạn "nạp" dữ liệu trong bộ nhớ.
JavaScript là hình ảnh lớn hơn, với các dòng mã bổ sung để thao tác đối tượng hoặc thực hiện tất cả các loại nội dung khác.

Một JSON dụ sẽ là:

{ 
    "glossary": { 
     "title": "example glossary", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
       "GlossEntry": { 
        "ID": "SGML", 
        "SortAs": "SGML", 
        "GlossTerm": "Standard Generalized Markup Language", 
        "Acronym": "SGML", 
        "Abbrev": "ISO 8879:1986", 
        "GlossDef": { 
         "para": "A meta-markup language, used to create markup languages such as DocBook.", 
         "GlossSeeAlso": ["GML", "XML"] 
        }, 
        "GlossSee": "markup" 
       } 
      } 
     } 
    } 
} 

dụ Một JavaScript sẽ là:

var Glossary = { 
    "glossary": { 
     "title": "example glossary", 
     "GlossDiv": { 
      "title": "S", 
      "GlossList": { 
       "GlossEntry": { 
        "ID": "SGML", 
        "SortAs": "SGML", 
        "GlossTerm": "Standard Generalized Markup Language", 
        "Acronym": "SGML", 
        "Abbrev": "ISO 8879:1986", 
        "GlossDef": { 
         "para": "A meta-markup language, used to create markup languages such as DocBook.", 
         "GlossSeeAlso": ["GML", "XML"] 
        }, 
        "GlossSee": "markup" 
       } 
      } 
     } 
    } 
} 

Thông báo các var Glossary = trong JavaScript?

0

Vâng Trước hết, JavaScript cũng giống như bất kỳ đối tượng nào khác trong lập trình hướng đối tượng.

Và như RobG đã nói JSON thực sự là một đối tượng theo nghĩa đen trong ký hiệu Javascript. Nhưng không chính xác. Theo một cuốn sách javascript nó nói đây là một đối tượng được xác định bằng cách sử dụng Object Notation:

var newObject = 
{  prop1 : true,  
showMessage : function (msg) {alert(msg)} 
}; 

Theo JSON trong JavaScript,

JSON là một tập hợp con của đối tượng ký hiệu đen của JavaScript.

Ngoài ra bạn có thể muốn xem xét tham gia một cái nhìn này link

0
var object = { 
    name: "John", 
    profession: "blogger" 
}; 

alert(object.name);//John 
alert(typeof(object));//Object 
alert(object);//[object Object] 


var json = JSON.stringify(object); 

alert(json.name);//undefined 
alert(typeof(json));//string 
alert(json);//{"name":"John","profession":"blogger"} 
Các vấn đề liên quan