JSON

JSON是什么

1.JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。

JSON有哪两种数据结构

JSON基础结构:
JSON结构有两种结构:
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。
对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [“java”,”javascript”,”vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构

如何解析JSONObject(附案例)

json数据格式解析我自己分为两种;

一种是普通的,一种是带有数组形式的;
普通形式的:

      String json_str = "{\"name\":\"张三\",\"age\":21}";

解析:

  try {
            JSONObject mJsonObject = new JSONObject(json_str);
            String name = mJsonObject.getString("name");
            int age = mJsonObject.getInt("age");
            jsTv.setText(name);
            jsTv1.setText(age+"");
        } catch (JSONException e) {
            e.printStackTrace();

带数组形式的:
[ {“name”:”张三”,”age”:21}, {“name”:”李四”,”age”:22}]
解析:

 private void parseJson1() {
        String json_str="{\"name\":\"张三\",\"age\":21,\"info\":{\"class\":\"三年一班\",\"id\":2016001}}";
        try {
            JSONObject jsonObject=new JSONObject(json_str);
            String name=jsonObject.getString("name");
            int age =jsonObject.getInt("age");

            JSONObject classObj =jsonObject.getJSONObject("info");

            String className =classObj.getString("class");
            int id=classObj.getInt("id");

            jsTv.setText(className);
            jsTv1.setText(id+"");
        } catch (JSONException e) {
            e.printStackTrace();
        }

如何解析JSONArray(附案例)

SONArray:

1.它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如: [value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为,get()和 opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。

同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。
2.JSONArray,由JSONObject构成的数组,用[{},{},…,{}]来表示
3.如何从字符串jsonString获得JSONArray对象 JSONArray jsonArray = new JSONArray(jsonStr);
4.如何从JSONArray中获得JSONObject对象

JSONArray jsonArray =new JSONArray(json_str);
            JSONObject obj1 =jsonArray.getJSONObject(0);

案例:

private void parseJson2() {
//        Toast.makeText(this, "1111", Toast.LENGTH_SHORT).show();
        String json_str="[ {\"name\":\"张三\",\"age\":21},{\"name\":\"李四\",\"age\":22}]";
        try {
            JSONArray jsonArray =new JSONArray(json_str);
            JSONObject obj1 =jsonArray.getJSONObject(0);
            String name =obj1.getString("name");

            JSONObject obj2=jsonArray.getJSONObject(0);
            int age=obj2.getInt("age");

            JSONObject obj3=jsonArray.getJSONObject(1);
            String name1=obj3.getString("name");

            JSONObject obj4=jsonArray.optJSONObject(1);
            int age1=obj4.getInt("age");

            jsTv.setText(name);
            jsTv1.setText(age+"");
            jsTv2.setText(name1);
            jsTv3.setText(age1+"");


        } catch (JSONException e) {
            e.printStackTrace();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值