`
hello_wzc
  • 浏览: 5274 次
社区版块
存档分类
最新评论

json数组对象和对象数组

阅读更多
一、Json的简单介绍
从结构上看,所有的数据最终都可以分成三种类型:
第一种类型是scalar(标量),也就是一个单独的string(字符串)或数字(numbers),比如“北京”这个单独的词。
第二种类型是sequence(序列),也就是若干个相关的数据按照一定顺序并列在一起,又叫做array(数组)或List(列表),比如“北京,东京”。
第三种类型是mapping(映射),也就是一个名/值对(Name/value),即数据有一个名称,还有一个与之相对应的值,这又称作hash(散列)或dictionary(字典),比如“首都:北京”。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它的规则非常简单并且是有趣的:
1) 并列的数据之间用逗号(“,”)分隔。
2) 映射用冒号(“:”)表示。
3) 并列数据的集合(数组)用方括号("[]")表示。
4) 映射的集合(对象)用大括号(“{}”)表示。
按照这个规则可以作以下理解:
1.数组用“[]”创建,对象用“{}”创建,并且使用Json基本都是用[]或者{}创建的数组或对象,否则一个普通的字符串是没有意义的;
2.无论是数组还是对象,之间的元素都用“,”隔开;
3.对象内部,(属性的)名称和值用“:”隔开,并且必须要用“:”隔开,不可单独存在属性名或者值;
4.对象和数组可以互相嵌套,即数组中的一个元素可以是一个对象也可以是一个数组,同理对象中的一个属性的值可以是一个对象也可以是一个数组。
二、事例
1.
var china= {beijing:{name:"北京",area:"16000",haidian:{name:"海淀区"}},
shanghai:{name:"上海",area:"10000",minhang:{name:"闵行区"}}};
alert(china.beijing.haidian.name);
alert(china.shanghai.minhang.name);
分别弹出“海淀区”和“闵行区”。
2.
var ourcountry=[["北京市"],["上海市"],["合肥市","芜湖市","蚌埠市"]];
alert(ourcountry[2][1]);
弹出“芜湖市”。
3.
var zhongguo={provinces:[{name:"北京",cities:[{name:"北京市",quxian:["海淀区","朝阳区","东城区","西城区"]}]},
{name:"安徽省",cities:[{name:"芜湖市",quxian:["繁昌县","芜湖县","南陵县","三山区"]},{name:"合肥市",quxian:["肥西县","蜀山区","庐阳区"]}]},
"湖北省"
]};
var str = "中国:{\n";
for(var i = 0; i < zhongguo.provinces.length; i++)
{
if(zhongguo.provinces.cities != null)
{
str += zhongguo.provinces.name + "{";
for(var j = 0; j < zhongguo.provinces.cities.length; j++)
{
if(zhongguo.provinces.cities[j] != null)
{
str += zhongguo.provinces.cities[j].name + "{";
for(var k = 0; k < zhongguo.provinces.cities[j].quxian.length; k++)
{
str += zhongguo.provinces.cities[j].quxian[k];
if(k != zhongguo.provinces.cities[j].quxian.length - 1)
{
str += ",";
}
}
str += "}";
}
}
str += "}\n";
}
}
str += "}";
alert(str);
弹出“
中国:{
北京{北京市{海淀区,朝阳区,东城区,西城区}}
安徽省{芜湖市{繁昌县,芜湖县,南陵县,三山区}合肥市{肥西县,蜀山区,庐阳区}}
}
”。
三、Json在Ajax中的应用
客户端可以给服务器端通过地址栏或者post很容易的提交数据,但是服务器端处理完数据之后,将计算的结果信息回传给客户端时就存在了一定的难度,特别是 数据量较大时。这个时候数据的格式成了关键,按照某种格式可以很方便的进行数据的组装,然后可以很方便的进行解析。使用Json便是一种很好的策略。在服 务器端,按照Json的格式拼装好一个字符串,响应给客户端。客户端如何进行解析呢?一般有两种策略(两种策略的名称是自己给的名字,不一定很合理,但是 思路应该是没有问题的):
1.直接解析
var json = eval('(' + result + ')');
通过上面这个表达式,就完成了将服务器端响应给客户端的Json格式的字符串解析成了一个Json(格式的)对象,名称为“json”,通过“json.”或者“json[]”的方式便可进行数据访问。
2.间接解析
var json = "r=" + result;
eval(json);
当然上面行代码可以合并为:eval("r=" + result);
通过上面的计算,也可以将服务器端响应给客户端的Json格式的字符串解析成了一个Json(格式的)对象,但是该对象名称为“r”,通过“r.”或者“r[]”的方式可进行数据访问。
总结:Json是一种简单的数据交换格式,它几乎可以很好的代替xml让服务器之间灵活的交换数据。
四、JavaScript中的数组和对象
在JavaScript中,通常用[]创建的数据格式称为数组,用{}创建的东西称为对象。
有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},运行alert(a[1]),两种情况下的运行结果是相同的!这就是说,数据集合既可以用数组表示,也可以用对象表示,那么到底该用哪一种呢?
其实数组表示有序数据的集合,而对象表示无序数据的集合。如果数据的顺序很重要,就用数组,否则就用对象。
当然,数组和对象的另一个区别是,数组中的数据没有“名称”(name),对象中的数据有“名称”(name)。但是问题是,很多编程语言中,都有一种叫 做“关联数组”(associativearray)的东西。这种数组中的数据是有名称的。比如在javascript中,可以这样定义一个对象:
var a={"城市":"北京","面积":16800,有趣,"人口":1600};
但是,也可以定义成一个关联数组:
var a = new Array();
a["城市"]="北京";
a["面积"]=16800;
a["人口"]=1600;
这样一来好像数组和集合就没有区别了,其实不是,在Javascript语言中,关联数组就是对象,对象就是关联数组。通过第二种方式创建的数组和通过 []方式创建的数组是有很大的区别的,在第二个方式创建的“数组”中,也可以和第一种方式类似,通过“a.城市”来得到“北京”,“a.人口”来得到 “1600”,但是它和第一种方式创建的对象又是有区别的,通过第一种方式定义的a是没有length属性的,二通过第二种方式定义的a有,可是值为0, 可见里面的差别还是有的,要想具体搞清楚,恐怕得看看底层的一些实现代码了。

当 eval 返回的 json 值时,提示 Error: Invalid Label 摘要: 我们经常会在服务器端返回 json 格式的值,这样可以直接在脚本中当作完整的对象来使用,但是,许多新手通常都会遇到一个错误提示:Invalid Label ,这个问题通常会让人苦恼不堪,因为明明正确的 json 格式,却提示错误。如果你遇到此问题,那赶快看看本文的内容吧!

我们经常会在服务器端返回 json 格式的值,这样可以直接在脚本中当作完整的对象来使用,但是,许多新手通常都会遇到一个错误提示: Invalid Label ,这个问题通常会让人苦恼不堪,因为明明正确的 json 格式,却提示错误。


假如你从服务器端返回的是 json 格式的字符串:
>
当你在脚本中用 eval 的方式运行:
>
这时会提示 : Error: Invalid Label
实际上,我们的 json 格式并没有错误,只是在 eval 的时候,要把你的 json 值用 “()” 括号括起来:
> var result = eval("(" + o.responseText + ")"); help001
分享到:
评论

相关推荐

    易语言生成二维json数组源码

    二维JSON数组,简单来说,就是包含多个JSON对象或数组的数组。例如,我们可以有一个包含多个学生信息的数组,每个学生信息又是一个包含姓名、年龄等属性的对象。在易语言中实现这样的功能,需要对JSON格式有深入的...

    json转对象数组与对象数组转json --Java

    ### JSON转对象数组与对象数组转JSON(Java) 在Java编程语言中,处理...以上就是关于Java中JSON字符串与对象数组之间相互转换的基本流程和技术要点。通过这种方式,开发者可以更加灵活地处理各种复杂的JSON数据结构。

    易语言生成二维json数组

    在IT行业中,JSON...但以上描述了在易语言中生成二维JSON数组的基本过程和可能涉及的关键点,希望对你理解这个问题有所帮助。如果你需要更深入的技术指导或者有具体的代码需要分析,可以进一步提供详细信息。

    经典ASP读取JSON字符串/生成JSON对象,数组对象等。

    这篇关于“经典ASP读取JSON字符串/生成JSON对象,数组对象等”的知识将详细介绍如何在ASP环境中处理JSON数据。 1. **JSON对象与数组的结构**: JSON对象以大括号{}表示,键值对之间用逗号分隔。键必须是字符串,用...

    java判断字符串是否是json或json数组.txt

    java判断字符串是否是json或json数组; 简单小方法,很实用;简单实用的方法;亲测可用;嗯嗯嗯呃呃呃呃呃呃呃

    AJAX和struts2传递JSON数组

    在本场景中,我们将探讨如何使用AJAX来传递JSON数组,并在Struts2的Action中接收和处理这些数据。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析...

    js实现json数组分组合并操作示例

    本示例探讨的是如何使用JavaScript实现JSON数组的分组合并操作,这对于数据处理和分析尤其有用。下面将详细解释这个示例中的关键知识点。 1. **遍历JSON数组**: 在示例中,我们首先通过`for`循环遍历输入的JSON...

    C#构造Json数组

    通过上述代码,我们可以在C#中轻松地将`DataTable`对象转换成JSON数组格式,这对于Web应用中的前后端数据交换具有重要的意义。虽然这段代码没有使用任何第三方库,但在实际开发中,使用如`Newtonsoft.Json`这样的库...

    Java组装json和java解析json数组

    附件内容为:Java组装map数据,然后转换为json数据格式;Java解析json数据

    比较json对象中的两个数组含有的相同元素,点击按钮输出新的数组

    假设我们有两个JSON对象,`obj1`和`obj2`,它们各自包含一个数组属性,如`arr1`和`arr2`: ```json { "obj1": { "arr1": ["元素1", "元素2", "元素3", "元素4"] }, "obj2": { "arr2": ["元素2", "元素4", ...

    json与对象互转,json数组与对象数组互转

    标题“json与对象互转,json数组与对象数组互转”涉及到的是如何在JavaScript中将JSON字符串和JavaScript对象之间进行转换,以及JSON数组和JavaScript对象数组之间的转换。在JavaScript中,有内置的全局函数`JSON....

    GSON解析复杂的JSON数组 - CSDN博客1

    本文将深入探讨GSON库中的两个核心方法:toJson()和fromJson(),以及如何使用它们来解析复杂的JSON数组。 一、toJson()方法 toJson()方法是GSON库将Java对象转换为JSON数据的关键工具。它提供了多种重载形式,以...

    js操作两个json数组合并、去重,以及删除某一项元素

    两个json数组合并去重,以及删除某一项元素 let ha = [ {id:'H',name:'3'}, {id:'A',name:'6'}, {id:'B',name:'14'}, ...// 合并两个json数组,并去重; ha= Object.assign([], ha, hb); console.log('ha

    c#利用Newtonsoft.Json解析json(带数组)

    在C#中,我们可以将JSON对象映射到类,将JSON数组映射到List或其他集合类型。 假设我们有一个JSON字符串,如下所示: ```json { "name": "John", "age": 30, "cars": [ {"name": "Ford", "model": "Mustang"},...

    json各种解析,包括数组,对象

    这里有详细的json解析用法,包括json数组的带参数和不带参数的解析

    省-市-地区_县_名称及代码JSON数组.rar

    标签“省-市-地区_县_名称及代码JSON数组.rar”同样反映了文件的主要内容,即省、市、地区的名称和代码,以及文件的类型是RAR压缩文件。 压缩包子文件的文件名称列表包括: 1. `index.html`:这通常是一个网页的...

    Jackson将json string转为Object,org.json读取json数组的实例

    使用ObjectMapper可以轻松地将JSON数据转换为Java对象,而org.json库的JSONArray和JSONObject类则提供了处理JSON数组和对象的方法。在实际应用过程中,需要根据具体的数据结构和需求来选择合适的方法,并注意异常...

    将数组转换成JSON对象

    在IT领域,将数组转换为JSON对象是一项常见且重要的技能,尤其在前后端数据交互、存储和传输数据时。从给定的文件标题和描述中,我们可以提炼出以下几个关键知识点: ### 1. JSON(JavaScript Object Notation)...

    安卓 JSON实现对象和数组的相互转换

    在安卓开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于服务器与客户端之间的数据...在实际项目中,还可以根据需求扩展`GsonUtil`类,例如添加处理JSON数组的方法或处理特殊情况的逻辑。

    javascript读取json数组生成滚动分页

    在JavaScript编程中,处理大量数据时,为了...以上就是使用JavaScript读取JSON数组生成滚动分页的基本步骤和关键知识点。在实际开发中,可能还需要考虑错误处理、数据缓存、状态管理等问题,以实现更完善的分页功能。

Global site tag (gtag.js) - Google Analytics