Android 解析 Json(Java Script Object Notation)两种方式

一、 Json两种结构:

1.名称/值的集合 被理解为对象(object)

数据格式:

  • 每一个对象以“{”(左括号)开始,“}”(右括号)结束
  • 每个名称后跟一个“:”名称/值 对之间使用“,” 隔开 如:
    {
    "name":"domain",
    "age":19
    }

2.值的有序列表 被理解为数组(array)

数据格式

  • 以 “[” 开始 ,“]” 结束 值之间用“,” 隔开 如:
    {
    "students":
    [
    {"name":"domain","age":15},
    {"name":"jack","age":16}
    ]
    }

二、android解析json 数据

1.使用JsonObject 解析

  • 首先写一个json数据,这边直接用字符串的形式写好,写了一个头 person 。正常来说数据是从服务器读取过来的json数据,关于android的网络通信 以后会在写,这边主要写json数据的解析
    String jsoncontent ="{\"person\":{\"address\":\"ganzhou\",\"id\":101,\"name\":\"domain\"}}";

  • 写了一个方法传入 json数据的 头 和json数据 然后用JsonObject 进行解析

 public void getjson(String key,String jsoncont){

        try {
              //新建jsonobject 对象 把json格式的字符串 传进来
            JSONObject jsonObject =new JSONObject(jsoncont);
              //把除了头之外的内容读取出来 存为新的jsonobject 对象
            JSONObject personjsonObject=jsonObject.getJSONObject(key);
              //把数据中的id读取出来 赋值 给id
            id=personjsonObject.getInt("id");
              //把数据中的name读取出来 赋值 给name
            name=personjsonObject.getString("name");
              //把数据中的address读取出来 赋值 给address
            address=personjsonObject.getString("address");
             //打印输出 。(没有问题)
            System.out.println(id+name+address);

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

2.使用Gson 进行解析

  • 介绍

1.可以把java对象转化成json,也可以把json字符串转化成一个相等的java对象
2.支持任意复杂包括没有源代码的对象

  • 创建一个json格式的字符串数据

转义之后

  String jsoncontent1="{\n" +
            "\t\"animals\":{\n" +
            "\t\"dog\":[\n" +
            "\t\t{\"name\":\"Rufus\",\"breed\":\"labrador\",\"count\":1,\"twoFeet\":false},\n" +
            "\t\t{\"name\":\"Marty\",\"breed\":\"whippet\",\"count\":1,\"twoFeet\":false}\n" +
            "\t],\n" +
            "\t\"cat\":{\"name\":\"Matilda\"}\n" +
            "}\n" +
            "}";

转义之前

{
    "animals":{
    "dog":[
        {"name":"Rufus","breed":"labrador","count":1,"twoFeet":false},
        {"name":"Marty","breed":"whippet","count":1,"twoFeet":false}
    ],
    "cat":{"name":"Matilda"}
}
}
  • 完成gson库的依赖在app中的build.gradle 的dependencies 加入
    compile 'com.google.code.gson:gson:2.6.2'
    
  • 创建javaBean 类,在之后gson的解析方法中要用到。可以通过在线json生成javaBean类工具
生成的类
  • 接下来就可以用Gson进行json数据的解析了
        //实例化root类,root类中实例化了其他三个类,所以这边只需要实例化root类
        Root root=new Root();
        //实例化Gson 
        Gson gson=new Gson();
        //调用gson的form.Json 进行解析,只需要传入json格式的数据和你所生成的javaBean类的定义
        root=gson.fromJson(jsonstr,Root.class);
  • 测试是否解析成功
        System.out.println("----解析后的数据--->");
        System.out.println("取出dom name");
        for (int i = 0;i

运行结果

Android 解析 Json(Java Script Object Notation)两种方式_第1张图片
运行结果

你可能感兴趣的:(Android 解析 Json(Java Script Object Notation)两种方式)