如何算如何获取json的长度度

本帖子已过去太久远了,不再提供回复功能。本帖子已过去太久远了,不再提供回复功能。2012年 总版技术专家分年内排行榜第一
2013年 总版技术专家分年内排行榜第七2011年 总版技术专家分年内排行榜第五2009年 总版技术专家分年内排行榜第九
2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2016年9月 .NET技术大版内专家分月排行榜第二2016年6月 .NET技术大版内专家分月排行榜第二2016年3月 .NET技术大版内专家分月排行榜第二2016年1月 .NET技术大版内专家分月排行榜第二2015年12月 .NET技术大版内专家分月排行榜第二2015年2月 .NET技术大版内专家分月排行榜第二2015年1月 .NET技术大版内专家分月排行榜第二2014年11月 .NET技术大版内专家分月排行榜第二2014年5月 .NET技术大版内专家分月排行榜第二2014年4月 .NET技术大版内专家分月排行榜第二2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。JSON对象长度和遍历方法 - 简书
<div class="fixed-btn note-fixed-download" data-toggle="popover" data-placement="left" data-html="true" data-trigger="hover" data-content=''>
写了27841字,被39人关注,获得了59个喜欢
JSON对象长度和遍历方法
数组有长度.abc.length,如果单纯是json格式,那么不能直接使用json.length方式获取长度,而应该使用其他方法。最近在修改一个页面的的时候遍历JSON对象,却怎么也调试不通过。怪这个HTML网页不知道用了什么方法禁止了错误提示,刚开始的时候不知道有这个问题,用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.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.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 jsonL}
学习计算机编程技术一定要严谨认真,容不得半点马虎,学习最重要是把基础打牢,囫囵吞枣、不求甚解会给工作和学习带来很多隐患,效率上必须打折扣。写下来以自勉!
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:如何解析长度不确定的json? - Golang中国
15:50 发布 1528 次点击
比如{"name1":{"a":1,"b":2,"c":3},"name2"{"aa":11,"bb":22}}
其中name1字段不固定,可能回有name3,name4, 里面那层的长度也不固定。。。谢谢。。。原来用ruby很简单,golang解析这类好难。。
yelanxin 于
15:51 修改
你这个情况定义一个map[string]map[string]int变量就能解析了。
b := []byte({"Name":"Wednesday","Age":6,"Parents":["Gomez","Morticia"]})
var f interface{}
err := json.Unmarshal(b, &f)
fmt.Println(f)
ruby里是怎么做的?
是不是从类似map的数据结构里取出键值对,然后把值转换为想要的数据类型?
回复2楼,放到interface里面,还要去断言里面的类型是吗?
明白了,ruby里不用转换
hash = JSON.parse('{"name1":{"a":1,"b":2,"c":3},"name2":{"aa":11,"bb":22}}')
puts hash["name1"]["b"]
回复3楼:ruby : JSON.parse(jsondata) ,我的例子 就能解析成一个潜套map结构
1楼能详细一些吗?我是golang信手。
我试了下断言,貌似只能段言最外层的。。。这样如果层数很多,就麻烦。。。
有个约束就是类型必须一致,比如"a","b","c"等的值都只能是整数。
package main
"encoding/json"
txt = []byte(`{"name1":{"a":1,"b":2,"c":3},"name2":{"aa":11,"bb":22}}`)
func main() {
var m map[string]map[string]int
if err := json.Unmarshal(txt, &m); err != nil {
fmt.Println(err)
fmt.Println(m["name1"]["b"])
谢谢 stevewang,帮了我很大的忙。
如果类型不一致,就只能用interface{}再做类型转换了
package main
"encoding/json"
txt = []byte(`{"name1":{"a":1,"b":2,"c":3},"name2":{"aa":11,"bb":"bb string!"}}`)
func main() {
var m map[string]map[string]interface{}
if err := json.Unmarshal(txt, &m); err != nil {
fmt.Println(err)
fmt.Println(m["name2"]["bb"].(string))
bb string!
stevewang的方法对于这个例子好用,但是如果类型不固定就比较郁闷了,这点静态语言不如动态语言。
参见#11,类型不固定也没多几个字节的源代码啊。
而且静态语言相对动态语言的好处就不用多说了。
谢谢stevewang,我受益了。。。
后方可回复, 如果你还没有账号你可以
一个帐号。}

我要回帖

更多关于 json最大长度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信