JSON 长度获取

json数组有长度json.abc.length,如果单纯是json格式,那么不能直接使用json.length方式获取长度,而应该使用其他方法。

最近在修改一个html页面的JS的时候遍历JSON对象,却怎么也调试不通过。怪这个HTML网页不知道用了什么方法禁止了js错误提示,刚开始的时候不知道有这个问题,用chrome的开发人员工具都没发现错误,就是在获取 json.length的时候总是undefined,所以就以为自己定义的json方法不对。折腾了一个晚上一点进展都没有,头都整晕了,太晚,最后失望地洗洗睡了。

第二天晚上就是不甘心这个小问题能难倒我,于是静下心来仔细查原因。自己新建一个空的HTML文 件在其中测试,发现JSON对象根本没有length属性,在搜索引擎查找也没有比较权威的参考文档提到json有这个属性。博客也很少有提到 json.length 的。但是奇怪的是我明明记得json有length,我还用过,程序没错,正确运行。

那是怎么回事呢?最后看某博客一篇文章的时候回想起以前编程的细节,记得以前的json的子对象是个数组而这次的不是,这下终于恍然大悟了。

以前我使用json的这样的结构:

var json1={"abc":[{"name":"txt1"},{"name","txt2"}]};

遍历的方法是:

for(var i=0;i<json1.abc.length;i++){alert(json1.abc[i].name);}

这里的json1.abc是一个数组,数组是由2个子json组成的,数组是有length属性的,所以说能工作。

而我这一次的json是这样的:

var json2={"name":"txt1","name2":"txt2"};

而json本身没有length属性,所以用length属性自然会出错:

for(var i=0;i<json2.length;i++){alert(json2[i].text);}

那么要遍历这样的json怎么办呢?这样做:

for(var js2 in json2){

alert( js2+"="+json2[js2]);

}

既然json没有length属性,如果要知道他的长度怎么办呢?很简单,把上面的遍历改一下就是了:

var jslength=0;

for(var js2 in json2){

jslength++;

}

把这段代码写成一个方法,以后调用就行了:

function getJsonLength(jsonData){

var jsonLength = 0;

for(var item in jsonData){

jsonLength++;

}

return jsonLength;

}
时间: 2024-08-03 16:14:39

JSON 长度获取的相关文章

获取JSON长度的方法

一.JSON获取代码: function getJsonLength(jsonData){     //获取JSON长度的方法     var jsonLength = 1;     for(var item in jsonData){         jsonLength++;     }     return jsonLength; } 二.调试: //console.log(getJsonLength(content)); for(var i=1;i<getJsonLength(conte

java遍历复杂json字符串获取想要的数据

https://blog.csdn.net/qq_34309663/article/details/80508125 java如何解析复杂的json数据关于json处理的包有好几个,比如jackson.Gson.Fastjson.Gson是谷歌做的,功能强大:Fastjson是阿里巴巴做的,性能更快.具体用哪个,开心就好.我这里两个都没用,用的是java的一个类库-json-lib.如果你用的是maven构建的项目,添加依赖请注意加上JDK版本15,详情请戳这里ok,多的不说了,让我们直接来解析

JS 获取json长度

var keleyijson={"plug1":"myslider","plug2":"zonemenu","plug3":"keleyi"} function JSONLength(obj) { var size = 0; var key; for (key in obj) { //obj中存在几个关键字 if (obj.hasOwnProperty(key)) size++; } r

JSON使用——获取网页返回结果是Json的代码

public String getWebData(String strUrl){ String json = null; try { URL url = new URL(strUrl); HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 利用HttpURLConnection对象获取网页数据. conn.setConnectTimeout(3 * 1000); // 设置超时时间为3秒 conn.setReq

JSON异步获取网络数据

//定义一个方法来获取网络数据,接受参数为网址 func onSearch(url: String){ //定义一个NSURL var nsUrl: NSURL = NSURL(string: url)! //定义一个NSURLRequest var request: NSURLRequest = NSURLRequest(URL: nsUrl) //异步获取数据 NSURLConnection.sendAsynchronousRequest(request, queue: NSOperatio

后台返回JSON前台获取循环解析

利用JQuery的$.ajax()可以很方便的调用 asp.net的后台方法.但往往从后台返回的json字符串不能够正确解析,究其原因,是因为没有对返回的json数据做进一步的加工.其实,这里只需 要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次即可,这种方式也适合以普通javascipt方式获取json对象,以 下举例说明: $.ajax({        type: "POST",        url: "json_post.aspx/get

python无限遍历,实现在多维嵌套字典、列表、元组的JSON中获取数据

接口返回json数据中可能嵌套列表,列表内又嵌套字典的情况, 接口自动化过程中需要通过一个key值直接获取到对应的value,所以有了下面的函数 不多说,上代码: #! /usr/bin/python # coding:utf-8 """ @author:Bingo.he @file: get_target_value.py @time: 2017/12/22 """ def get_target_value(key, dic, tmp_list

JSON长度

import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.Predicate; import net.minidev.json.JSONArray; public class Test { public static String readjson(String json, String jsonPath) { try { Object value = JsonPath.read(json, jsonPath, new Pre

python操作json文件获取内容

写case时,将case 写到json文件比写到,写python一定要学会处理json 以下,是要处理的json 处理操作包括:打开json文件,获取json文件内容,关闭json文件,读取内容中的对应key的value { "name": "BeJson", "url": "http://www.bejson.com", "page": 88, "isNonProfit": true,