json解析

页面导航:首页 > 网络编程 > JavaScript > json解析

json解析

来源: 作者: 时间:2016-02-20 09:49 【

android开发中,与服务器交互80%是通过json方式传输数据,JSON 也是基于纯文本的数据 26684;式,JSON具有跨平台的优势,相对xml,json解析起来更方便,简单,解析数据所消耗的流量也会比xml少,而且

android开发中,与服务器交互80%是通过json方式传输数据,JSON 也是基于纯文本的数据格式,JSON具有跨平台的优势,相对xml,json解析起来更方便,简单,解析数据所消耗的流量也会比xml少,而且json有一些好的第三方库文件,已为开发者封装好了,


JSON语法规则:

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

    JSON 名称/值对

    JSON 数据的书写格式是:名称/值对

    名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:比如;"firstName":"John"

    JSON 值

    JSON 值可以是:
    • 数字(整数或浮点数)
    • 字符串(在双引号中)
    • 逻辑值(true 或 false)
    • 数组(在方括号中)
    • 对象(在花括号中)
    • null

      比如值是基本类型

      {"city":"Beijing","street":" Chaoyang Road ","postcode":100025} 

      {}代表是一个对象,这些都是简单的key/value形式,如果用对象来表示的话:

      public class Info {
      	public String city;
      	public String street;
      	public int postcode;
      }
      

      在这个javabean中并没有使用get,set方法,因为get,set方法是使用反射做的,比较慢,这是json最简单的方式,key/value形式,我们知道json有三种种方式,一种是key/value,key/Object,key/array,现在讲讲key/Object形式

      比如:

      {"name":"Michael","address":{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}} 

      这里有2个对象,一个是最外面的,一个是address:它也是一个对象,我们说了{}就代表一个对象,因此 首先写里面的对象,然后再写外面的对象,代码如下:

      Info.java

      package com.example.josn;
      
      public class Info {
      	public String city;
      	public String street;
      	public int postcode;
      }
      

      Person.java

      /**
       * {"name":"Michael","address":{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}} 
       * @author carpool
       *
       */
      public class Person {
      		public String name;
      		public Info info;
      }

      json解析代码:

      String jsonString = getJsonString();
      		try {
      			JSONObject jb = new JSONObject(jsonString);
      			Person p = new Person();
      			Info info  = new Info();
      			info.city = jb.getJSONObject("address").getString("city");
      			info.street = jb.getJSONObject("address").getString("street");
      			info.postcode = jb.getJSONObject("address").getInt("postcode");
      			p.info = info;
      			p.name = jb.getString("name");
      		} catch (JSONException e) {
      			e.printStackTrace();
      		}


      现在还剩下一个种形式json,就是key/array,比如:

      {
          "people": [
              {
                  "firstName": "Brett",
                  "lastName": "McLaughlin",
                  "email": "aaaa"
              },
              {
                  "firstName": "Jason",
                  "lastName": "Hunter",
                  "email": "bbbb"
              },
              {
                  "firstName": "Elliotte",
                  "lastName": "Harold",
                  "email": "cccc"
              }
          ]
      }

      我们知道{}代表的是一个对象,[]代表的是数组,表示数组中存放了很多对象,对象之间用逗号(,)分开,

      这个用对象封装一般有二种形式,一是直接用集合把解析的对象存储起来,二是用一个类封装一个集合,集合的对象就是上面所解析的对象即可

      第一种方式:

      People.java

      public class People {
      	public String firstName;
      	public String lastName;
      	public String email;
      }


      解析:

      String jsonString = getJsonString();//json串
      		try {
      			JSONObject jb = new JSONObject(jsonString);
      			JSONArray ja = jb.getJSONArray("people");
      			ArrayList ps = new ArrayList();
      			for(int i=0;i
      


      第二种写法:

      public class Multiplepeople {
      	public List peoples;
      }

      String jsonString = getJsonString();//json串
      		try {
      			JSONObject jb = new JSONObject(jsonString);
      			JSONArray ja = jb.getJSONArray("people");
      			Multiplepeople multiplepeople = new Multiplepeople();
      			List ps = new ArrayList();
        			for(int i=0;ijson就到了,多练习就会了!







      代表的是key为address,值是个对象,




      

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<