json解析之四种基本格式的解析

转载 2015年11月20日 11:07:19
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String str = "";
        JSONObject jsonObject = null;
        String json = "";


        //直接一个对象的解析
        json = "{\"username\":\"zms\",\"age\":43,\"addr\":\"江西省高安市村前镇\"}";
        try {
            jsonObject = new JSONObject(json);
            str = "名字:" + jsonObject.getString("username") + " 年龄:" + jsonObject.getString("age") + " 地点:" + jsonObject.getString("addr") + "\n";
            Log.d("tech_jsontest", str);
        } catch (JSONException e) {
            e.printStackTrace();
        }


        //对象里有数组
        str = "";
        json = "{\"username\":\"张木生\",age:11,\"jicheng\":[{\"zhengshu\":\"PMP\",\"date\":\"2011年\"},{\"zhengshu\":\"信息系统项目管理师\",\"date\":\"2012年\"}],\"addr\":\"江西\"}";
        try {
            jsonObject = new JSONObject(json);
            str = "名字:" + jsonObject.getString("username") + " 年龄:" + jsonObject.getString("age");
            JSONArray jichengArray = jsonObject.getJSONArray("jicheng");
            for (int i = 0; i < jichengArray.length(); i++) {
                JSONObject jsonJichengObj = (JSONObject) jichengArray.opt(i);
                str += " 级称" + String.valueOf(i + 1) + ": 证书:" + jsonJichengObj.getString("zhengshu")
                        + " 时间:" + jsonJichengObj.get("date") + "\n";
            }
            str += " 地点:" + jsonObject.get("addr") + "\n";
            Log.d("tech_jsontest", str);
        } catch (JSONException e) {
            Log.e("tech_jsontest", e.getMessage());
        }


        //直接一个数组
        str = "";
        json="[{\"devid\":\"1234567800\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\"},{\"devid\":\"1234567832\",\"latitude\":\"29.4943\",\"longitude\":\"1161.129\"}]";
        try {
            JSONArray jsonArrDevid = new JSONArray(json);
            for (int i = 0; i < jsonArrDevid.length(); i++) {
                JSONObject jsonObjDevid = (JSONObject) jsonArrDevid.get(i);
                str += "devid" + i + ": " + "编号:" + jsonObjDevid.getString("devid") + " 精度:"
                        + jsonObjDevid.getString("latitude") + " 纬度:" + jsonObjDevid.get("longitude")+
                         "\n";
            }
            Log.d("tech_jsontest", str);
        } catch (JSONException e) {
            Log.e("tech_jsontest", e.getMessage());
        }


        //数组里有数组
        str = "";
        json="["+
                "{\"devid\":\"1234567800\",\"gps\":[{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\"},{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\" }],\"devname\":\"赣01\"},"+
                " {\"devid\":\"1234567800\",\"gps\":[{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\"},{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\" }],\"devname\":\"赣92\"},"+
                " {\"devid\":\"1234567800\",\"gps\":[{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\"},{\"time\":\"2014-11-12\",\"latitude\":\"29.4963\",\"longitude\":\"116.189\" }],\"devname\":\"赣43\"}"+
                "]";
        try {
            JSONArray jsonArrdevid = new JSONArray(json);
            for (int i = 0; i < jsonArrdevid.length(); i++) {
                JSONObject jsonObjdevid = (JSONObject) jsonArrdevid.get(i);
                str += "devid" + i + ": 编号:" + jsonObjdevid.get("devid");
                JSONArray jsonArrGps = jsonObjdevid.getJSONArray("gps");
                for (int j = 0; j < jsonArrGps.length(); j++) {
                    JSONObject jsonObjGps = (JSONObject) jsonArrGps.get(j);
                    str += " gps" + j + ": 时间:" + jsonObjGps.get("time")+
                           " 经度:" + jsonObjGps.getString("latitude") +
                           " 纬度:" + jsonObjGps.getString("longitude");
                }
                str += " 名称:" + jsonObjdevid.getString("devname") + "\n";
            }
            Log.d("tech_jsontest",str);

        } catch (JSONException e) {
            Log.e("tech_jsontest", e.getMessage());
        }


    }

}

JSON的几种解析方法

一、json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,在Json.org网站上,Java可以使用的解析Jso...
  • ndscuw
  • ndscuw
  • 2016年07月29日 16:42
  • 8635

JSONObject、JSONArray

最近两个星期接触最多的就是json和map了。    之前用到的json,就是一个键对应一个值,超级简单的一对一关系。现在用到的json那可以层层嵌套啊,刚开始接触的时候,确实有种崩溃的赶脚,不想去...
  • lishuangzhe7047
  • lishuangzhe7047
  • 2014年06月06日 16:41
  • 181067

分辨率、像素、密度和屏幕尺寸的关系(换算)

分辨率、像素、密度和屏幕尺寸的关系(换算) 手机的分辨率 像素 密度和 屏幕尺寸是我们经常听到的字眼,它们之间的关系如下: 分辨率是指屏幕上有横竖各有多少个容器点,...
  • ruanjianruanjianruan
  • ruanjianruanjianruan
  • 2015年11月25日 22:55
  • 5725

超详细JSON解析步骤

JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得...
  • miaozhenzhong
  • miaozhenzhong
  • 2016年09月19日 14:58
  • 23769

IOS json解析的四种方式

作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式。 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验...
  • lcg910978041
  • lcg910978041
  • 2016年05月19日 08:40
  • 769

超详细JSON解析步骤

JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式 具有良好的可读和便于快速编写的特性。 业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了...
  • lsh364797468
  • lsh364797468
  • 2016年05月08日 18:48
  • 2866

通过银行卡号解析银行名称和卡别

前几天在支付宝添加银行卡的时候注意到输完卡号支付宝就自动识别了银行名称,所以用Firefox自带的工具看了一下实现方式,发现支付宝有一个 API 来做这个事情,只要依据固定的格式发送HTTP请求就可以...
  • li_star
  • li_star
  • 2015年06月25日 19:10
  • 6376

几种不同格式的json解析

给服务端发送请求后,服务端会返回一连串的数据,这些数据在大部分情况下都是XML格式或者JSON格式。然后JSON相对XML来说解析相对方便一些,所以先说说JSON的解析。 JSON的基本数据格式...
  • whx405831799
  • whx405831799
  • 2014年12月26日 14:14
  • 10486

json 解析 ---Gps坐标转百度地图坐标

在开发过程中,遇到了通过gps获取地理位置,然后需要在百度地图上显示,但是通过gps获取到的坐标跟百度地图上的坐标是有差别的,具体差异,可以去百度一下,这里就不做详细的解释,百度地图也提供了相应的转换...
  • WuGee2015
  • WuGee2015
  • 2015年10月01日 23:01
  • 1254

JSON标准格式

标准JSON的合法符号:{(左大括号)  }(右大括号)  "(双引号)  :(冒号)  ,(逗号)  [(左中括号)  ](右中括号) JSON字符串:特殊字符可在字符前面加 \ 或使用 \u 加 ...
  • assholeu
  • assholeu
  • 2015年01月23日 02:10
  • 45559
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:json解析之四种基本格式的解析
举报原因:
原因补充:

(最多只允许输入30个字)