javascript json解析-JSON数据是如何解析的

2023-08-26 0 1,019 百度已收录

JSON数据解析

JSON(JavaScript 对象表示法)是一种轻量级数据交换格式。 它基于 ECMAScript 的一个子集。 JSON 使用完全与语言无关的文本格式,并且还使用类似于 C 语言家族(包括 C、C++、C#、Java、JavaScript、Perl、Python 等)的约定。 这一特性使得 JSON 成为一种理想的数据交换语言。 便于人读写,也便于机器解析生成(通常用于提高网络传输速度)。

JSON 的规则很简单:对象是“名称/值对”的无序集合。 对象以“{”(左括号)开头,以“}”(右括号)结束。 每个“名称”后跟一个“:”(引号); “‘名称/值’对”之间用“,”(冒号)分隔。具体细节参考

举一个简单的例子

js代码

function showJSON() {
    var user = {
        "username": "andy",
        "age": 20,
        "info": {
            "tel": "123456",
            "cellphone": "98765"
        },
        "address": [{
                "city": "beijing",
                "postcode": "222333"
            }, {
                "city": "newyork",
                "postcode": "555666"
            }
        ]
    }
    alert(user.username);
    alert(user.age);
    alert(user.info.cellphone);
    alert(user.address[0].city);
    alert(user.address[0].postcode);
}

这表示具有用户名、年龄、信息、地址等属性的用户对象。

也可以使用JSON简单改变数据,改变里面的例子得到:

js代码

function showJSON() {
    var user = {
        "username": "andy",
        "age": 20,
        "info": {
            "tel": "123456",
            "cellphone": "98765"
        },
        "address": [{
                "city": "beijing",
                "postcode": "222333"
            }, {
                "city": "newyork",
                "postcode": "555666"
            }
        ]
    }
    alert(user.username);
    alert(user.age);
    alert(user.info.cellphone);
    alert(user.address[0].city);
    alert(user.address[0].postcode);
    user.username = "Tom";
    alert(user.username);
}
showJSON()

JSON 提供了 json.js 包。 下载并导入后,您可以简单地使用object.toJSONString()将其转换为JSON数据。

js代码

function showCar() {
    var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");
    alert(carr.toJSONString());
}
function Car(make, model, year, color) {
    this.make = make;
    this.model = model;
    this.year = year;
    this.color = color;
}

javascript json解析-JSON数据是如何解析的

您可以使用​eval​将 JSON 字符转换为对象

js代码

function myEval() { 
    var str = '{ "name": "Violet", "occupation": "character" }'; 
    var obj = eval('(' + str + ')'); 
    alert(obj.toJSONString()); 
}

或者使用​parseJSON()​

js代码

function myEval() {
    var str = '{ "name": "Violet", "occupation": "character" }';
    var obj = str.parseJSON();
    alert(obj.toJSONString());
}

下面使用prototype来写一个JSON ajax的例子。

先写一个servlet(我的是servlet.ajax.JSONTest1.java),只写一句话

java代码

response.getWriter().print("{ "name": "Violet", "occupation": "character" }");

然后在页面上写一个ajax请求

js代码

function sendRequest() {

    var url = "/MyWebApp/JSONTest1";

    var mailAjax = new Ajax.Request(

        url, {

        method: 'get',

        onComplete: jsonResponse

    });

}

function jsonResponse(originalRequest) {

    alert(originalRequest.responseText);

    var myobj = originalRequest.responseText.parseJSON();

    alert(myobj.name);

}

在prototype-1.5.1.js中提供了JSON方法,String.evalJSON(),你可以在不使用json.js的情况下更改里面的方法

js代码

function jsonResponse(originalRequest) {
    alert(originalRequest.responseText);
    var myobj = originalRequest.responseText.evalJSON(true);
    alert(myobj.name);
}

JSON还提供了java jar包API也很简单javascript json解析javascript json解析,下面是一个反例

在javascript中添加请求参数

js代码

function sendRequest() {
    var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow");
    var pars = "car=" + carr.toJSONString();
    var url = "/MyWebApp/JSONTest1";
    var mailAjax = new Ajax.Request(
        url, {
        method: 'get',
        parameters: pars,
        onComplete: jsonResponse
    });
}

使用JSON请求字符串可以简单地生成JSONObject并解析它,更改servlet添加JSON处理(使用json.jar)

java代码

javascript json解析-JSON数据是如何解析的

private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {

    String s3 = request.getParameter("car");

    try {

        JSONObject jsonObj = new JSONObject(s3);

        System.out.println(jsonObj.getString("model"));

        System.out.println(jsonObj.getInt("year"));

    } catch (JSONException e) {

        e.printStackTrace();

    }

    response.getWriter().print("{ "name": "Violet", "occupation": "character" }");

}

还可以使用 JSONObject 生成 JSON 字符串,更改 servlet

java代码

private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String s3 = request.getParameter("car");
    try {
        JSONObject jsonObj = new JSONObject(s3);
        System.out.println(jsonObj.getString("model"));
        System.out.println(jsonObj.getInt("year"));
    } catch (JSONException e) {
        e.printStackTrace();
    }
    JSONObject resultJSON = new JSONObject();
    try {
        resultJSON.append("name", "Violet")
            .append("occupation", "developer")
            .append("age", new Integer(22));
        System.out.println(resultJSON.toString());
    } catch (JSONException e) {
        e.printStackTrace();
    }
    response.getWriter().print(resultJSON.toString());
}

js代码

function jsonResponse(originalRequest) {

    alert(originalRequest.responseText);

    var myobj = originalRequest.responseText.evalJSON(true);

    alert(myobj.name);

    alert(myobj.age);

}

接下来重点讲一下JS中对json数据的处理:

1. JSON数据结构(对象和字段)

json对象:​varobj={"name":"xiao","age":12};​

json链表:​​

var objArray = [{"name":"xiao","age":12},{"name":"xiao","age":12}];

javascript json解析-JSON数据是如何解析的

2、处理json数据,依赖文件包括:jQuery.js

3、注意:数据传输时,json数据以文本形式存在,即字符串格式;

JS语言操作JS对象;

所以json字符串和JS对象之间的转换是关键;

4. 数据格式

Json字符串:varjson_str='{"name":"xiao","age":12}';

Josn对象:varobj={"name":"xiao","age":12};

JS对象:Object{name:"xiao",age:12}

5. 类型转换

Json字符串-->JS对象,用法:

注明:json_str和obj代表本文小标题4中的数据类型;

obj=JSON. 解析(json_str);

obj=jQuery. parseJSON(json_str);

注意:如果传入格式错误的json字符串(例如:'{name:"xiao",age:12}'),将会抛出异常;

Json字符串格式,严格格式:'{"name":"xiao","age":12}'

JS 对象 --> Json 字符串:

json_str=JSON. 字符串化(对象);

笔记:

1. eval() 是原生 JS 函数。 使用这种方法: eval('('+'{name:"xiao",age:12}'+')') 不安全,不能保证类型转换为 JS 对象;

2、以上3种技术均通过chrome浏览器进行了测试,测试结果截图如下;

Json字符串--> JS对象;

JS 对象 --> Json 字符串:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 javascript javascript json解析-JSON数据是如何解析的 https://www.wkzy.net/game/157485.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务