JS中生成与解析JSON

js中生成json对象

js中解析json字符串:

1.eval("..."):

var a_id=eval(‘{"name":123}’);

如果eval中的内容含有恶意脚本就麻烦了

2.json_parse:

需要导入json_parse.js:

<script src="js/json_parse.js"></script>  
  <script language="javascript">  
      var t = json_parse(‘{"name":123}‘);  
      alert(t.name);  
  </script>>

安全,解析速度快

3.var vjson = JSON.parse(jsonstr):

支持IE8和fireFox3这两个有内置json对象的浏览器;其他浏览器要引入json.js文件

<script src="js/json.js"></script>  
  <script language="javascript">  
      var t = JSON.parse(‘{"name":123}‘);  
      alert(t.name);  
  </script> 
  安全,解析速度也很快。

----------------------------------分割线-------------------------------------------------------

js中解析json字符串

JSON.stringify:

语法: 
JSON.stringify
(value [, replacer] [, space]) 
value:是必须要的字段。就是你输入的对象,比如数组啊,类啊等等。 
replacer:这个是可选的。它又分为2种方式,一种是方法,第二种是数组。 
情况一:我们先说数据,通过我们后面的实验可以知道,它是和第一个有关系的。一般来说,我们系列化后的结果是通过键值对来进行表示的。 
比如说: 
name:"lan",age:25 
这种形式。 
所以,如果这种形式的话,如果第二个的值在第一个存在,那么的话就以第二个的值做key,第一个值为value进行表示,如果不存在,sorry,忽略。【是不是有点抽象,我也这么觉得,不过你等一下看实验 就OK了。。呼呼。】 
情况二:如果是方法,那很简单,就是说把系列化后的每一个对象(记住 是每一个)传进方法里面进行处理。 
space:很好理解,用什么来做分隔符的。 
1.如果省略的话,那么显示出来的值 就没有分隔符。直接输出来 
2.如果是一个数字的话,那么它就定义缩进几个字符,当然 如果大于10 ,则最大值为10. 
3.如果是一些转义字符,比如“\t”,表示回车,那么它每行一个回车。 
4.如果仅仅是字符串,OK,就在每行输出值的时候把这些字符串附加上去就OK。当然,最大长度也是10个字符。 
开始用实例说明; 
1.只有一个参数的情况下:

复制代码 代码如下:

var student = new Object(); 
student.name = "Lanny"; 
student.age = "25"; 
student.location = "China"; 
var json = JSON.stringify(student); 
alert(student);

结果如下: 

有些人可能会怀疑JSON.stringify的作用,OK。那假如,我们不要这个函数。代码下面的样子:

复制代码 代码如下:

var student = new Object(); 
student.name = "Lanny"; 
student.age = "25"; 
student.location = "China";

// var json = JSON.stringify(student); 
alert(student);

 恭喜你 得到的结果是:

没骗你吧,继续。
2.第二个参数存在,并且第二个参数还是function的时候

复制代码 代码如下:

var students = new Array() ; 
students[0] = "Lanny"; 
students[1] = "dong"; 
students[2] = "I love you"; 
var json = JSON.stringify(students,switchUpper); 
function switchUpper(key, value) { 
return value.toString().toUpperCase(); 

alert(json);

        //var json = JSON.stringify(students, function (key,value) {

        //return value.toString().toUpperCase();

       //});

    上面的方法也可以换成下面的,2个都是一样,只是写法有那么一点点的不一样而已。 
 得到结果如下: 

3.第二个参数存在,并且第二个参数不是function,而是数组的时候。 
3.1 【误区】如果第一个参数是数组,第二个参数也是数组的话,只显示第一个参数的值。 
比如:

复制代码 代码如下:

var students = new Array() ; 
students[0] = "Lanny"; 
students[1] = "dong"; 
students[2] = "I love you"; 
var stu = new Array(); 
stu[0] = "1"; 
stu[1] = "2"; 
var json = JSON.stringify(students,stu); 
alert(json);

 sorry 得到的结果就是: 

第二个被忽略了,只是第一个被系列化了。

3.2 如果第一个是对象(这里说的对象就像在C#里面可以进行new的),第二个是数组的。

那么如果第二个的value在第一个存在,那么的话就以第二个的值做key,第一个值为value进行表示

复制代码 代码如下:

var student = new Object(); 
student.qq = "5485891512"; 
student.name = "Lanny"; 
student.age = 25;

var stu = new Array(); 
stu[0] = "qq"; 
stu[1] = "age"; 
stu[2] = "Hi";//这个student对象里不存在。

var json = JSON.stringify(student,stu); 
alert(json);

 得到的结果如下: 

因为stu[2] = "Hi";这个Hi 在第一个找不到,所以就不进行显示了。

4.第三个参数

4.1.如果省略的话,那么显示出来的值 就没有分隔符。直接输出来

比如:

复制代码 代码如下:

var student = new Object(); 
student.qq = "5485891512"; 
student.name = "Lanny"; 
student.age = 25;

var stu = new Array(); 
stu[0] = "qq"; 
stu[1] = "age"; 
stu[2] = "Hi";

var json = JSON.stringify(student,stu); 
alert(json);

 输出的就是: 

4.2.如果是一个数字的话,那么它就定义缩进几个字符,当然 如果大于10 ,则最大值为10.

复制代码 代码如下:

var student = new Object(); 
student.qq = "5485891512"; 
student.name = "Lanny"; 
student.age = 25;

var stu = new Array(); 
stu[0] = "qq"; 
stu[1] = "age"; 
stu[2] = "Hi";

var json = JSON.stringify(student,stu,100);//注意这里的100 
alert(json);

那么得到的是: 

空开来了10个字符。

4.3.如果是一些转义字符,比如“\t”,表示回车,那么它每行一个回车。

也是一样。

4.4.如果仅仅是字符串,OK,就在每行输出值的时候把这些字符串附加上去就OK。当然,最大长度也是10个字符。

如果是var json = JSON.stringify(student,stu,“HaiKou”);//

时间: 2024-12-18 21:52:05

JS中生成与解析JSON的相关文章

使用JSONObject生成和解析json

使用JSONObject生成和解析json 1. json数据类型 类型 描述 Number 数字型 String 字符串型 Boolean 布尔型 Array 数组 Object 对象 null 空值 (1)json中不区分整数.小数等类型,而统一使用Number来存储数字. (2)Array表示数组,以中括号"[]"括起来,元素之间以逗号分隔,元素可以为任意类型. (3)Object表示对象,类似于C语言中的结构体,以花括号"{}"括起来,其元素要求为键值对,k

FastJson生成和解析JSON数据

生成和解析JSON数据格式的包有很多种:Gson.json-smart.FastJson.jackjson等,FastJson是一个阿里巴巴的大神开发的开源的Json处理工具包,包括"序列化"和"反序列化"两部分,号称最快.但是我认为没有最快,只有更快,只要这个功能满足我的需求,速度不错就行了,这就是我选择工具的基本标准(不是特别追求性能...). FastJson功能强大,完全支持Java Bean.集合.Map.日期.Enum,支持范型,支持自省:无依赖,能够直

Android中使用Gson解析JSON数据的两种方法

Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率. 从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组

fastjson生成和解析json数据,序列化和反序列化数据

本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>) 2.通过一个android程序测试fastjson的用法. fastjson简介: Fastjson是一个Java语言编写的高性能功能完善的JSON库.fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jack

浅入浅出JS中的eval及json

声明: 首先声明一下,本人是JS新手,所以不敢说深入,只是把最近对eval的学习经验拿出来跟大家分享,如果您是高手可略去不看. 适合读者: 对JS中的eval一知半解,不知eval是如何把字符串转换为json对象的,在用eval把字符串转换为json时常遇到“missing ] after element list”错误却不知哪儿错了的朋友 一.Eval介绍(这部分来自http://www.w3school.com.cn/js/jsref_eval.asp) 定义和用法:eval() 函数可计算

Android中利用Gson解析Json

在Android开发中,Json是一种客户端与服务器端交互的一种语言,它语法简单,最好的是目前市面上有很便捷的轮子可以对他进行解析.例如,Gson就是google提供的一款用于解析或者生成Json的库,可以直接将Json字符串映射成对应的实体类,十分方便.下面我总结一下利用Gson解析Json的用法以及我遇到的问题. 最简单对象的解析: 例如下边这段Json字符串: { text: "Love", img:"http://img2.imgtn.bdimg.com/it/u=2

通过Json和Gson,快速生成和解析json字符串

1,首先我们要先明白json与gson有什么区别 其实他们是完全不同的概念: json是一种数据格式,便于数据传输,存储,交换. gson则是一种组件库,就是通过Gson我们可以把java中的对象(gson.toJson()),转换成Json字符串,当然反过来也是可以的(gson.fromJson); 2,代码 首先我们需要JSon和Gson这两个jar包 package com.json.dome; import java.util.ArrayList;import java.util.Lis

Java中构造和解析JSON

什么是 Json? JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式.  易于人阅读和编写.同时也易于机器解析和生成.它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个子集.  JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯(包括C, C++, C#

js之第三方工具解析JSON

1.JSON 仅仅是一种文本字符串.它被存储在 responseText 属性中 为了读取存储在 responseText 属性中的 JSON 数据,须要依据 JavaScript 的 eval 函数.函数 eval 会把一个字符串当作它的參数. 然后这个字符串会被当作 JavaScript 代码来运行.由于 JSON 的字符串就是由 JavaScript 代码构成的,所以它本身是可运行的 比如例如以下方式: String json = "{username:'一叶扁舟',age:22}&quo