在JS中操作JSON数据

2024-05-09 12:32
文章标签 js json 操作 数据

本文主要是介绍在JS中操作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" };

    一、JSON字符串转换为JSON对象

    要运用上面的str1,必须运用下面的要领先转化为JSON对象:

    //由JSON字符串转换为JSON对象

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

   或者

    var obj = str.parseJSON(); //由JSON字符串转换为JSON对象

    或者

    var obj = JSON.parse(str); //由JSON字符串转换为JSON对象

    然后,就可以这样读取:

    Alert(obj.name);

    Alert(obj.sex);

    特别留心:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。

    二、可以运用 toJSONString()或者全局要领 JSON.stringify()将JSON对象转化为JSON字符串。

    例如:  var last=obj.toJSONString(); //将JSON对象转化为JSON字符

    或者   var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

    alert(last);

    留心:

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

三、JSON 合并函数

//Json合并
var extend =function(des, src, override){
if(src instanceof Array){
for(var i = 0, len = src.length; i < len; i++)
extend(des, src[i], override);
}
for( var i in src){
if(override || !(i in des)){
des[i] = src[i];
}

return des;
}

四、JSON排序函数

//函数功能:json 排序 
// filed:(string)排序字段, 
// reverse: (bool) 是否倒置(是,为倒序) 
// primer (parse)转换类型 
// Json.sort(sortBy('CourseLength', false, parseInt)); 
var sortBy = function (filed, rev, primer) { 
rev = (rev) ? -1 : 1; 
return function (a, b) { 
a = a[filed]; 
b = b[filed]; 
if (typeof (primer) != "undefined") { 
a = primer(a); 
b = primer(b); 

if (a < b) { 
return rev * -1; 

if (a > b) { 
return rev * 1; 
}
return 1;

}

这篇关于在JS中操作JSON数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/973422

相关文章

MySql删除重复数据只保留最小id的那条数据。某某公司的临时面试题

错误代码: DELETE FROMpayment WHEREserial IN ( SELECT serial FROM payment GROUP BY serial HAVING count(*) > 1 ) AND id NOT IN ( SELECT min( id ) AS id FROM payment GROUP BY serial HAVING count( serial )

Android_02_在内部或外部存储中读写文件的操作

前言:  Ram内存:运行内存,相当于电脑的内存  Rom内存:内部存储空间,相当于电脑的硬盘 sd卡:外部存储空间,相当于电脑的移动硬盘 1>在内部存储中读写文件 代码示例如下: package com.itheima.rwinrom;import java.io.BufferedReader;import java.io.File;import java.io.File

在android的同一个wifi局域网下,利用socket与多个手机进行数据的收发

前言: 在这里强调局域网,是因为内网之间的设备通信时,无需经过外网,若想内网的设备能够与外网进行通信,可自行百度其解决办法... 虽说利用wifi,实质是怎么利用socket来进行通信的问题 步骤一:编写服务端和客户端的代码 服务端代码(MainActivity.java): package com.example.dai.wifiserver;import android

java流操作对文件的分割和合并

学习文件的输入输出流,自己做一个小的示例,对文件进行分割和合并。     下面是代码: <span style="font-size:14px;">package com.dufy.file;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import

Jquery 实现表单提交按钮变灰,防止多次点击提交重复数据

表单提交时候我们应该控制提交按钮,不能点击多次进行数据的重复提交。要不然就会有冗余的重复的数据在系统中,造成系统出现数据垃圾。jQuery很简单的就可以实现对表单提交按钮控制,下面就是相关的例子和代码。 <form action="${pageContext.servletContext.contextPath}/XXX/###" method="post" id="messag

javaweb—jstl如何循环List中的Map数据

第一种方式: 1:后台代码(测试) List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();Map<String, Object> map = null;for (int i = 0; i < 4; i++) {map = new HashMap<String, Object>();map.put("id",

状态机的三种骚操作,值得你了解

点击上方“小麦大叔”,选择“置顶/星标公众号” 福利干货,第一时间送达 大家好,我是小麦,这次我们一起来学习C语言实现状态机的三种方法解析。 状态机的实现无非就是 3 个要素:状态、事件、响应。转换成具体的行为就 3 句话。 发生了什么事?现在系统处在什么状态?在这样的状态下发生了这样的事,系统要干什么? 用 C 语言实现状态机主要有 3 种方法:switch—case 法、表格驱动法、函数指针

NOR Flash 读写的高端操作,你看得懂吗?

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT下改造FlexSPI driver以AHB方式去写入NOR Flash。 痞子衡前段时间写过一篇 《串行NAND Flash的两大特性导致其在i.MXRT FlexSPI下无法XiP》,文章里介绍了 NAND Flash 的 Page Read 等待特性(发完 Read 命令后需要回读 Flash 内部状态寄存器 Bu

github 初始化操作小记

Git作为一种越来越重要的工具,github又如此流行,现在就简单记录一下git的基础操作,希望能帮助大家快速体验入门! 1 查看本地是否存在”公钥”和”私钥”  转存失败重新上传取消  如果没有,则执行:    ssh-keygen  -t rsa –C “youremail@example.com”   2 github上新建SSH key,可能key会有红线,放心不会报错!

Redis操作指南

目录 一、概述 4 1.1 目的 4 1.2 适用对象 4 1.3 文档内容 4 二、下载Redis及安装Redis 4 2.1 下载Redis 4 2.2 安装Redis 4 2.2.1 解压和编译 4 2.2.2 创建工作目录 5 三、 配置Redis 5 3.1 设置后台运行 5 3.2 设置工作目录 6 3.3 设置监听地址 6 3.4 设置pid存放路径 6