• JSON_in_js


    parse [pɑ:rs]  从语法上描述或分析(词句等),解析

    fetch [fɛtʃ]vt.接来(某人);使发出;吸引;拿取 vi.取来;抵达,到达  Using JSON: Fetch a JSON string,JSON.Parse the JSON string

    notation [noʊˈteɪʃn]n.记号,标记法  bracket ([]) notation,dot (.) notation, curly braces {}

    https://www.w3schools.com/js/js_json_intro.asp

    国内:http://w3schools.bootcss.com/json/default.html (比较老的内容,镜像)

    JSON vs XML:https://www.w3schools.com/js/js_json_xml.asp

    ---------------------------------------------------------------------------------------------------------

    • JSON stands for JavaScript Object Notation
    • JSON is a lightweight data-interchange format
    • JSON is "self-describing" and easy to understand
    • JSON is language independent *

    *JSON uses JavaScript syntax, but the JSON format is text only.
    Text can be read and used as a data format by any programming language.

    The JSON syntax is a subset of the JavaScript syntax.


    JSON Syntax Rules

    JSON syntax is derived from JavaScript object notation syntax:

    • Data is in name/value pairs
    • Data is separated by commas
    • Curly braces hold objects
    • Square brackets hold arrays

    A name/value pair consists of a field name (in double quotes), followed by a colon, followed by a value:

    Example

    "name":"John"

    JSON - Evaluates to JavaScript Objects

    The JSON format is almost identical to JavaScript objects.

    In JSON, keys must be strings, written with double quotes:

    JSON

    { "name":"John" }

    In JavaScript, keys can be strings, numbers, or identifier names:

    JavaScript

    { name:"John" }

    JSON Uses JavaScript Syntax

    Because JSON syntax is derived from JavaScript object notation, very little extra software is needed to work with JSON within JavaScript.

    With JavaScript you can

    create an object and assign data to it, like this:   var person = { "name":"John", "age":31, "city":"New York" };

     modifiedt, like this:                                  myObj["name"] = "Gilbert";  or myObj.name = "Gilbert";

    <!DOCTYPE html>
    <html>
    <body>
    <p>Modify a JavaScript object using the bracket notation:</p>
    <p id="demo"></p>
    <script>
    var myObj, x;
    x = {age:31}
    myObj = { "name":"John", "age":30, "city":"New York" };
    myObj["name"] = "Gilbert";
    myObj.age = x.age;
    myObj.city = "LA";
    document.getElementById("demo").innerHTML = myObj.name+"  age  "+myObj.age+"  from  "+myObj.city;
    </script>
    </body>
    </html>

    -----------------------------------------------

    JavaScript has a built in function to convert a string, written in JSON format, into native JavaScript objects:

    JSON.parse()

    https://www.w3schools.com/js/tryit.asp?filename=tryjson_store

    <!DOCTYPE html>
    <html>
    <body>
    
    <h2>Store and retrieve data from local storage.</h2>
    
    <p id="demo"></p>
    
    <script>
    var myObj, myJSON, text, obj;
    
    //Storing data:
    myObj = { "name":"John", "age":31, "city":"New York" };
    myJSON = JSON.stringify(myObj);
    localStorage.setItem("testJSON", myJSON);
    
    //Retrieving data:
    text = localStorage.getItem("testJSON");
    obj = JSON.parse(text);
    document.getElementById("demo").innerHTML = obj.name;
    </script>
    
    </body>
    </html>

    ====================================================================================================================================

    JavaScript Arrays as JSON

    The same way JavaScript objects can be used as JSON, JavaScript arrays can also be used as JSON.

    JSON Files

    • The file type for JSON files is ".json"
    • The MIME type for JSON text is "application/json"

    Using JSON

    • Fetch a JSON string
    • JSON.Parse the JSON string

    ===JSON Data Types ===================================================

    Valid Data Types

    In JSON, values must be one of the following data types:

    • a string
    • a number
    • an object (JSON object)
    • an array
    • a boolean
    • null

    JSON values cannot be one of the following data types:

    • a function
    • a date
    • undefined

    JSON Strings

    Strings in JSON must be written in double quotes.

    Example

    { "name":"John" }

    JSON Numbers

    Numbers in JSON must be an integer or a floating point.

    Example

    { "age":30 }

    JSON Objects

    Values in JSON can be objects.

    Example

    {
    "employee":{ "name":"John", "age":30, "city":"New York" }
    }

    Objects as values in JSON must follow the same rules as JSON objects.

    ===JSON Objects=======================================================================================


    Object Syntax

    Example

    { "name":"John", "age":30, "car":null }

    JSON objects are surrounded by curly braces {}.

    JSON objects are written in key/value pairs.

    Keys must be strings, and values must be a valid JSON data type (string, number, object, array, boolean or null).

    Keys and values are separated by a colon.

    Each key/value pair is separated by a comma.


    Accessing Object Values

    You can access the object values by using dot (.) notation:

    Example

    myObj = { "name":"John", "age":30, "car":null };
    x = myObj.name;

    You can also access the object values by using bracket ([]) notation:

    Example

    myObj = { "name":"John", "age":30, "car":null };
    x = myObj["name"];

     

    Looping an Object

    You can loop through object properties by using the for-in loop:

    Example

    myObj = { "name":"John", "age":30, "car":null };
    for (x in myObj) {
        document.getElementById("demo").innerHTML += x+"<br>";;
    }

    In a for-in loop, use the bracket notation to access the property values:

    Example

    myObj = { "name":"John", "age":30, "car":null };
    for (x in myObj) {
        document.getElementById("demo").innerHTML += myObj[x]+"<br>";;
    }
    <!DOCTYPE html>
    <html>
    <body>
    <p>How to loop through all properties in a JSON object.</p>
    <p id="demo"></p>
    <script>
    var myObj = { "name":"John", "age":30, "car":null };
    for (x in myObj) {
        document.getElementById("demo").innerHTML += x + "<br>";
    }
    </script>
    </body>
    </html>

    Nested JSON Objects

    Values in a JSON object can be another JSON object.

    Example

    myObj = {
        "name":"John",
        "age":30,
        "cars": {
            "car1":"Ford",
            "car2":"BMW",
            "car3":"Fiat"
        }
     }

    You can access nested JSON objects by using the dot notation or bracket notation:

    Example

    x = myObj.cars.car2;
    //or:
    x = myObj.cars["car2"];

    Modify Values

    You can use the dot notation to modify any value in a JSON object:

    Example

    myObj.cars.car2 = "Mercedes";

    You can also use the bracket notation to modify a value in a JSON object:

    Example

    myObj.cars["car2"] = "Mercedes";

    Delete Object Properties

    Use the delete keyword to delete properties from a JSON object:

    Example

    delete myObj.cars.car2;

    ===JSON Arrays====================================================

    Arrays as JSON Objects

    Example

    [ "Ford", "BMW", "Fiat" ]

    Arrays in JSON are almost the same as arrays in JavaScript.

    In JSON, array values must be of type string, number, object, array, boolean or null.

    In JavaScript, array values can be all of the above, plus any other valid JavaScript expression, including functions, dates, and undefined.


    Arrays in JSON Objects

    Arrays can be values of an object property:

    Example

    {
    "name":"John",
    "age":30,
    "cars":[ "Ford", "BMW", "Fiat" ]
    }

    Accessing Array Values

    You access the array values by using the index number:

    Example

    x = myObj.cars[0];

    Looping Through an Array

    You can access array values by using a for-in loop:

    Example

    for (i in myObj.cars) {
        x += myObj.cars[i];
    }

    Or you can use a for loop:

    Example

    for (i = 0; i < myObj.cars.length; i++) {
        x += myObj.cars[i];
    }

     

    Nested Arrays in JSON Objects

    Values in an array can also be another array, or even another JSON object:

    Example

    myObj = {
        "name":"John",
        "age":30,
        "cars": [
            { "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },
            { "name":"BMW", "models":[ "320", "X3", "X5" ] },
            { "name":"Fiat", "models":[ "500", "Panda" ] }
        ]
     }

    To access arrays inside arrays, use a for-in loop for each array:

    Example

    for (i in myObj.cars) {
        x += "<h1>" + myObj.cars[i].name + "</h1>";
        for (j in myObj.cars[i].models) {
            x += myObj.cars[i].models[j];
        }
    }

    Modify Array Values

    Use the index number to modify an array:

    Example

     myObj.cars[1] = "Mercedes";

    Delete Array Items

    Use the delete keyword to delete items from an array:

    Example

    delete myObj.cars[1];
     

    ===JSON.parse()=============================================================


    A common use of JSON is to exchange data to/from a web server.

    When receiving data from a web server, the data is always a string.

    Parse the data with JSON.parse(), and the data becomes a JavaScript object.


    Example - Parsing JSON

    Imagine we received this text from a web server:

    '{ "name":"John", "age":30, "city":"New York"}'

    Use the JavaScript function JSON.parse() to convert text into a JavaScript object:

    var obj = JSON.parse('{ "name":"John", "age":30, "city":"New York"}');

    Make sure the text is written in JSON format, or else you will get a syntax error.

    Use the JavaScript object in your page:

    Example

    <p id="demo"></p>

    <script>
    document.getElementById("demo").innerHTML = obj.name + ", " + obj.age;
    </script>

    JSON From the Server

    You can request JSON from the server by using an AJAX request

    As long as the response from the server is written in JSON format, you can parse the string into a JavaScript object.

    Example

    Use the XMLHttpRequest to get data from the server:

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            myObj = JSON.parse(this.responseText);
            document.getElementById("demo").innerHTML = myObj.name;
        }
    };
    xmlhttp.open("GET", "json_demo.txt", true);
    xmlhttp.send();

    Take a look at json_demo.txt


     

    Array as JSON

    When using the JSON.parse() on a JSON derived from an array, the method will return a JavaScript array, instead of a JavaScript object.

    Example

    The JSON returned from the server is an array:

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            myArr = JSON.parse(this.responseText);
            document.getElementById("demo").innerHTML = myArr[0];
        }
    };
    xmlhttp.open("GET", "json_demo_array.txt", true);
    xmlhttp.send();

    Take a look at json_demo_array.txt


    Exceptions

    Parsing Dates

    Date objects are not allowed in JSON.

    If you need to include a date, write it as a string.

    You can convert it back into a date object later:

    Example

    Convert a string into a date:

    var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
    var obj = JSON.parse(text);
    obj.birth = new Date(obj.birth);

    document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;

    Or, you can use the second parameter, of the JSON.parse() function, called reviver.

    The reviver parameter is a function that checks each property, before returning the value.

    Example

    Convert a string into a date, using the reviver function:

    var text = '{ "name":"John", "birth":"1986-12-14", "city":"New York"}';
    var obj = JSON.parse(text, function (key, value) {
        if (key == "birth") {
            return new Date(value);
        } else {
            return value;
        }});

    document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;

    Parsing Functions

    Functions are not allowed in JSON.

    If you need to include a function, write it as a string.

    You can convert it back into a function later:

    Example

    Convert a string into a function:

    var text = '{ "name":"John", "age":"function () {return 30;}", "city":"New York"}';
    var obj = JSON.parse(text);
    obj.age = eval("(" + obj.age + ")");

    document.getElementById("demo").innerHTML = obj.name + ", " + obj.age();

    You should avoid using functions in JSON, the functions will lose their scope, and you would have to use eval() to convert them back into functions.


    Browser Support

    The JSON.parse() function is included in all major browsers and in the latest ECMAScript (JavaScript) standard:

    Web Browsers Support
    • Firefox 3.5
    • Internet Explorer 8
    • Chrome
    • Opera 10
    • Safari 4

    For older browsers, a JavaScript library is available at https://github.com/douglascrockford/JSON-js.

  • 相关阅读:
    步步为营——算法初阶 1.算法概述
    Spring学习【Spring概述】
    Codeforces 490F Treeland Tour 树上的最长上升子序列
    汽车电商竞争白热化,“五大门派”谁能登顶?
    程序猿的出路
    Android Studio Share Project On Github
    hdu 1022 Train Problem I(栈的应用+STL)
    Scala, Groovy, Clojure, Jython, JRuby and Java ----我们的工作语言
    Oracle GoldenGate (ogg) 11.2.1.0.20 是最后一个支持oracle db 10g的 ogg版本号
    javascript异步代码的回调地狱以及JQuery.deferred提供的promise解决方式
  • 原文地址:https://www.cnblogs.com/charles999/p/7223644.html
Copyright © 2020-2023  润新知