2011-06-27 11 views

Respuesta

50

un objeto Javascript es un tipo de datos en Javascript - que tiene sentido sólo en Javascript. A menudo se ve un objeto Javascript literal así:

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

Un JSON cadena es un formato de intercambio de datos - no es nada más que un montón de caracteres con formato de una manera particular (con el fin de diferentes programas para comunicarse entre ellos). Debido a esto, puede existir dentro de Javascript, o en otro idioma o simplemente almacenarse dentro de una base de datos o un archivo de texto.

Lo anterior Javascript objeto puede ser representado en el formato JSON en Javascript como esto:

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

O en C# como esto:

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

Como se puede ver, un JSON simplemente se almacena dentro de una cuerda. Para que sea útil, la cadena JSON puede ser analizada para producir un objeto en cualquier idioma. Porque el objeto JSON imita el formato de Javascript sintaxis literal, Javascript hace que el proceso de análisis fácil:

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

Aunque normalmente verías:

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

Tenga en cuenta que JSON es limitado en que no puede funciones de la tienda: los únicos valores que puede contener son:

  • objetos (literales)
  • matrices
  • números
  • booleanos
  • cadenas
  • valores nulos
+3

La diferencia clave entre el objeto JSON y Javascript es "cadena JSON es un formato de intercambio de datos" y el objeto Javascript es un tipo de datos en Javascript – neelmeg

14

JSON es una representación de texto de un objeto javscript. Es efectivamente un objeto literal en la notación javascript (de ahí el nombre - JavaScript Object Notation => JSON).

Si usted quiere "comparar" dos objetos, convertir el texto a los objetos y luego comparar las claves y valores.

Algunos ejemplos de objetos a/de texto:

// 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"} 

Si desea comparar dos objetos, convertirlos de JSON a objetos (si son JSON en el primer lugar) y luego hacer algo como:

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

sí He leído that..i no consigue un ejemplo de declaración de ambos anywhere..i desee comparar y ver lo que es diferente? – Refti

+2

Edita tu pregunta para incluir eso. – RobG

+1

Tenga en cuenta: el "var obj =" NO es parte de JSON! Técnicamente hablando, JSON es solo de datos, aunque tiende a ejecutarse como si fuera un código para cargar un objeto en la memoria. Solo necesita el {} y las cosas intermedias como datos JSON, que luego podría 'evaluar' y asignar a una variable en su código JavaScript u otro lenguaje de programación. Al agregar la cosa "var", JSON pasa a ser Javascript ... –

3

JSON significa "JavaScript Object Notation".Básicamente, JSON es Javascript, pero se limita a llenar un objeto con datos. Al ejecutar un objeto JSON, "carga" los datos en la memoria.
JavaScript es la imagen más grande, con líneas de código adicionales para manipular el objeto o para hacer todo tipo de cosas.

Un JSON ejemplo sería la siguiente:

{ 
    "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" 
       } 
      } 
     } 
    } 
} 

ejemplo A JavaScript sería la siguiente:

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" 
       } 
      } 
     } 
    } 
} 

Aviso del var = Glosario en el código JavaScript?

0

Bien Primero de todo, un JavaScript es como cualquier otro objeto en la programación orientada a objetos.

Y como RobG dijo que JSON es efectivamente un objeto literal en la notación Javascript. Pero no exactamente De acuerdo con un libro Javascript se dice que esto es un objeto definido por el uso de notación de objetos:

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

De acuerdo con JSON en JavaScript,

JSON es un subconjunto de la notación literal de objetos de JavaScript.

También es posible que desee considerar la adopción de una mirada esta 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"} 
Cuestiones relacionadas