JSONObject、JSONArray

最近两个星期接触最多的就是json和map了。

   之前用到的json,就是一个键对应一个值,超级简单的一对一关系。现在用到的json那可以层层嵌套啊,刚开始接触的时候,确实有种崩溃的赶脚,不想去理,取个数据还那么麻烦。其实,就跟if else语句一样,如果if中套if,if中再套if,写的规范了还行,要是代码格式不规范,那我们肯定也看着麻烦。所以啊,对于json嵌套,只要记住符号“:”前是键,符号后是值大括号成对找,一层层剥开,就清楚了。 举个例子说明,如下:


      从外到里看,例子中就是一个数组,数组里面是两个json格式的字符串。这样分析思路就清晰多了。

    工作中需要取出name4的值,你们会怎么取呢?。最初我都想过字符串截取,那时还不了解JSONArray,现在知道了,取出来也就相当容易了。


    取出name4值过程步骤:1,将以上字符串转换为JSONArray对象;2,取出对象的第一项,JSONObject对象;3,取出name1的值JSONObject对象;4,取出name2的值JSONObject对象;5,取出name4的值value2。

    示例中json数组格式的字符串可以通过方法直接转换为JSONArray的格式:JSONArray.fromObject(String)

[java]  view plain  copy
 print ?
  1. </pre><pre name="code" class="java">JSONArray getJsonArray=JSONArray.fromObject(arrayStr);//将结果转换成JSONArray对象的形式  
  2. JSONObject getJsonObj = getJsonArray.getJSONObject(0);//获取json数组中的第一项  
  3. String result=getJsonObj.getJSONObject("name1").getJSONObject("name2").getJSONObject("name4");  

   好了我们说说这两个对象。

1,JSONObject

 json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value}

2,JSONArray

  json数组,使用中括号[ ],只不过数组里面的项也是json键值对格式的


  Json对象中添加的是键值对,JSONArray中添加的是Json对象

[java]  view plain  copy
 print ?
  1. JSONObject Json = new JSONObject();  
  2. JSONArray JsonArray = new JSONArray();  
  3.   
  4. Json.put("key""value");//JSONObject对象中添加键值对  
  5. JsonArray.add(Json);//将JSONObject对象添加到Json数组中  

3,JSONObject与Map

   Map map和json都是键值对,不同的是map中键值对中间用等号分开,json中键值对中间用冒号分开。其实json就是一种特殊形式的map。

[java]  view plain  copy
 print ?
  1. Map<String,String> strmap=new JSONObject();  

  这里的需求是:request对象获取的map,想要返回json格式也不用白费力了。。。。哈哈。。


  现在我可以说对map,json很了解,当初学习那会,可以说提到map就头疼,我嫌麻烦,对map和json会简单应用了就过了。现在工作了又捡起来重新学习了一次。出来混,早晚问题都是你的,哈哈。。。

112
 
17
 
 
查看评论
30楼  riju47132017-08-15 11:12发表 [回复]
厉害了我的姐
29楼  逝水--无痕2017-07-14 16:28发表 [回复]
Object result = getJsonObj.getJSONObject(&quot;name1&quot;).getJSONObject(&quot;name2&quot;).get(&quot;name4&quot;);我实际敲了下,最后得要用get(key)取值才能娶到name4的值
Re:  lishuangzhe70472017-07-17 08:45发表 [回复]
回复逝水--无痕:name4 就是key啊
28楼  六个辅导费2017-06-16 16:01发表 [回复]
点赞~
27楼  PM进阶者2017-06-12 15:04发表 [回复]
写的不错,点个赞!
26楼  咫尺红尘2017-05-16 14:37发表 [回复]
14年写的,妹子现在怎么样了
25楼  咫尺红尘2017-05-16 14:37发表 [回复]
14年写的,妹子现在怎么样了
24楼  weiguoxianadv2017-05-03 09:20发表 [回复]
可以哦,妹子
23楼  单车不孤单2017-03-16 18:02发表 [回复]
大神笑的忒魔性
22楼  hyp19872017-01-03 14:14发表 [回复]
json数组,使用中括号[ ],只不过数组里面的项也是json键值对格式的

Json对象中添加的是键值对,JSONArray中添加的是Json对象。

这两句有问题,JSONArray里边可以添加任何对象
21楼  0x0072016-08-18 15:08发表 [回复]
JSONArray没有add这个方法吧
//JsonArray.add(Json);//将JSONObject对象添加到Json数组中
Re:  铁血C2016-12-19 10:55发表 [回复]
回复0x007:json解析有两个包 我们平常用的是org.json这个,这个包JSONArray 是没有add方法的 只有put方法,楼主应该说明一下
20楼  pythonscrapy2016-06-06 17:09发表 [回复]
博主,你这个都是解析json
有没有拼装json比较好的办法,最近也在玩json,但是不光要解析还要,拼装一个发过去,,,,所以有没有拼装json的比较快的办法
19楼  怀有梦想的心2016-04-25 10:05发表 [回复]
写的不错
18楼  seuStones2016-04-12 11:24发表 [回复]
给美女大神点个赞!
17楼  Koow2016-03-11 14:35发表 [回复]
第一次真心评论,给这个女博主了,长得漂亮有错么?!?
16楼  秋雨午后2016-03-08 23:24发表 [回复]
总结的很好
15楼  麦田2016-02-23 16:24发表 [回复]
总结的挺好
14楼  iTarget2016-02-17 23:39发表 [回复]
map和json都是键值对,不同的是map中键值对中间用等号分开,json中键值对中间用冒号分开。
————————————————
改为“map和json都是键值对,不同的是map中的每一对键值对是用等号对应起来的,如:
userName="LiMing"
而json中的每一对键值对是用冒号对应起来的,如:
userAge:18
13楼  Battle_Man2016-01-28 11:02发表 [回复]
这么多好评的 怎么还有这么多点踩的?
12楼  _LinDL2016-01-21 12:00发表 [回复]
mark
11楼  wlccomeon2015-10-02 21:36发表 [回复]
这个是JsonObject包含JsonArray~~~http://www.cnblogs.com/xwdreamer/archive/2011/12/16/2296904.html
10楼  luckgirlstar2015-08-28 15:11发表 [回复]
不错,学习了啊
9楼  xihefeng2015-08-13 18:59发表 [回复]
引用“d99520y”的评论:我是新手,看懂了文中的意思,可是自己写还是懵,求楼主指点
这两行是我想取东西的:
JSONObjec...

result没有数组的" [ ]"符号,不是数组。直接使用getString
8楼  xihefeng2015-08-13 18:58发表 [回复]
引用“d99520y”的评论:我是新手,看懂了文中的意思,可是自己写还是懵,求楼主指点
这两行是我想取东西的:
JSONObjec...

result没有数组的" [ ]"符号,不是数组。直接使用getString
7楼  帝乙岩2015-07-08 12:03发表 [回复]
赞一个,适合学习,瞬间明白
6楼  Jerry_Li-CN2015-05-05 18:53发表 [回复]
赞一个赞一个
5楼  Rick_Bao2014-11-20 15:57发表 [回复]
写的很棒,一针见血,之前一直讲{ }当成JsonArray了,透彻
4楼  Looper景2014-10-12 10:18发表 [回复]
上次新闻客户端,在这上面花了好多时间,现在理解加深了,thank you for your blog!
3楼  萧萧Tony2014-09-25 20:57发表 [回复]
写得太好了!!一下子就懂了!思路清晰简洁!
2楼  刘佳翰2014-06-12 16:51发表 [回复] [引用] [举报]
学习!
1楼  李社河2014-06-07 08:13发表 [回复]
学习啦,这三个容易混淆,清晰了很多,收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值