黑马程序员技术交流社区

标题: 关于json数据的读取 [打印本页]

作者: 大菠萝    时间: 2015-7-3 23:58
标题: 关于json数据的读取
:{
    "response": {
        "data": [
            {
                "address": "南京市游乐园",
                "province": "江苏",
                "district": "玄武区",
                "city": "南京"
            }
        ]
        "datas": [
            {
                "address": "北京市游乐园",
                "province": "北京",
                "district": "海淀区",
                "city": "北京"
            }
        ]
    },
    "status": "ok"
}
我要读 datas 中的 district 的值,怎么写?

作者: qq496099229    时间: 2015-7-3 23:58
JSONObject  dataJson=new JSONObject("你的Json数据“); JSONObject  response=dataJson.getJSONObject("response"); JSONArray data=response.getJSONArray("data"); JSONObject info=data.getJSONObject(0); String province=info.getString("province"); String city=info.getString("city"); String district=info.getString("district"); String address=info.getString("address");  System.out.println(province+city+district+address);
作者: Morgan    时间: 2015-7-4 13:07
本帖最后由 Morgan 于 2015-7-4 14:41 编辑

首先,“datas”少了逗号,加上后才是正确的json数据。
废话不多说:直接上代码:
最外面的大括号{}解析
  1. String jsonStr="要解析的json语句";
  2.         try
  3.                 {
  4.                         //如果是java,首先要加入一个jar包 json-lib-2.4-jdk15.jarr包
  5.                         JSONObject jsonObject=new JSONObject(jsonStr);//1.第一层, 最外面{}实体
  6.                         
  7.                         JSONObject responseObject=jsonObject.getJSONObject("response");//2.第二层 response {}实体
  8.                         //responseObject下有两个元素,data和datas两个数组
  9.                         //解析第二个数组datas
  10.                         JSONArray array=responseObject.getJSONArray("datas");//第三次 Array[]数组
  11.                         //拿到datas中每一个元素---遍历数组中的每一个元素
  12.                     for (int i = 0; i < array.length(); i++)
  13.                         {
  14.                             //拿到的元素实体
  15.                             JSONObject object=array.getJSONObject(i);//第四层  每一个实体{}
  16.                             //获取实体中的字符串---district
  17.                             String district=object.getString("district");//  第五层  这里就拿到了实体中每一个字符串
  18.                                 
  19.                         }
  20.                     
  21.                    /**
  22.                       *网上类似json解析的资源很多,简单的搜一下就可以很轻松的解决。
  23.                      *推荐教程连接:<a  target="_blank">http://www.open-open.com/lib/view/open1326376799874.html</a>
  24.                     */
  25.                         
  26.                         
  27.                         
  28.                 } catch (JSONException e)
  29.                 {
  30.                         // TODO Auto-generated catch block
  31.                         e.printStackTrace();
  32.                 }
复制代码


  //希望可以帮助到你


作者: Morgan    时间: 2015-7-4 13:11
正确的json格式是这样的:
  1. {
  2.     "response": {
  3.         "data": [
  4.             {
  5.                 "address": "南京市游乐园",
  6.                 "province": "江苏",
  7.                 "district": "玄武区",
  8.                 "city": "南京"
  9.             }
  10.         ],
  11.         "datas": [
  12.             {
  13.                 "address": "北京市游乐园",
  14.                 "province": "北京",
  15.                 "district": "海淀区",
  16.                 "city": "北京"
  17.             }
  18.         ]
  19.     },
  20.     "status": "ok"
  21. }
复制代码

作者: a80194367    时间: 2015-7-5 08:04
来这是学习的,不用打赏
作者: chytth    时间: 2015-7-6 22:10
注意:{}里面的为JsonObject对象,[ ]里为JsonArry数组。
读取分别使用:JSONObject response=dataJson.getJSONObject("response");
JSONArray data=response.getJSONArray("data");
读取datas即为:String district=data.getJSONObject(0).getString("district");
作者: Jackron    时间: 2015-7-6 23:16
是定义了一个对象response={   ……   }   
import net.sf.json.JSONObject;
JSONObject jsonObject=JSONObject.fromObject(response);
        System.out.println(jsonObject(0).get("district"));




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2