黑猴子的家:JavaWeb 之 Json 的 JS 常用转换方式

1、Json 概述

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。

本文主要是对JS操作JSON的要领做下总结。

在JSON中,有两种结构:对象和数组。

1)一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:
var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};

2)数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。
例如:
var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];

为了方便地处理JSON数据,JSON提供了json.js包,下载地址:http://www.json.org/json.js

在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

JSON字符串

var str1 = '{ "name": "cxh", "sex": "man" }';

JSON对象

var str2 = { "name": "cxh", "sex": "man" };

2、Json字符串转为Json对象

三种方式
var obj = eval('(' + str + ')');
var obj = str.parseJSON();
var obj = JSON.parse(str); 

3、JSON对象转化为JSON字符串

两种方式
var last=obj.toJSONString(); 
var last=JSON.stringify(obj); 

4、Json读取

var str = '{ "name": "cxh", "sex": "man" }';
var obj = str.parseJSON();
Alert(obj.name);
数据组
var str='[{"name":"cxh","sex":"man"},{"name":"cxh1","sex":"man1"}]';
var obj = str.parseJSON();
alert(obj[0].name)

5、注意事项

上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低

6、code

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jquery/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/json3.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    
     var data1 = "[{\"name\":\"alex\"},{\"name\":\"Bom\"},{\"name\":\"Ton\"}]";
     var string_to_json = JSON.parse(data1);
     console.info(string_to_json);
     
     var json_to_string = JSON.stringify(string_to_json);
     console.info(json_to_string);
     
     //String 字符串转化成Json 对象
     var data2 = "[{\"name\":\"chunlynn\",\"age\":27,\"qq\":\"277539689\"},{\"name\":\"linda\",\"age\":25,\"qq\":\"123456789\"}]";
     var jsondata1 = JSON.parse(data2);
     console.info(jsondata1);
     console.info("姓名:"+jsondata1[0].name);
     console.info("年龄:"+jsondata1[0].age);
     console.info("qq:"+jsondata1[0].qq);
     console.info("qq:"+jsondata1[0]["qq"]);
     console.info(jsondata1 instanceof Array); //true
     console.info("jsondata[0]的JS类型: "+ typeof jsondata1[0]);
     console.info("age的JS类型: "+ typeof jsondata1[0].age); //number
     console.info("qq的JS类型: "+ typeof jsondata1[0].qq); //string 
     
     console.info("data的JS类型: "+ typeof data2);
    //将JSON对象序列化为JSON字符串
     var jsondata2 = JSON.stringify(data2); 
     console.info(jsondata1);
     console.info("jsondata的JS类型: "+ typeof jsondata2);
     
     //更多用法
     var jsondata3 = JSON.parse(data2, function (key, value) {
         if (typeof value == "number") {
             value = value+1000;
         }   
         return value;
     });
     console.info("姓名2:"+jsondata3[0].name);
     console.info("年龄2:"+jsondata3[0].age);
     console.info("qq2:"+jsondata3[0].qq);
}); 
</script>
</head>
<body>

</body>
</html>

https://bestiejs.github.io/json3/#section_1
https://www.cnblogs.com/liuqiyun/p/8594898.html
https://blog.csdn.net/chenchunlin526/article/details/78850996

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值