zoukankan      html  css  js  c++  java
  • android中JSON数据解析

    什么是JSON

    1.JSON(JavaScript Object Notation):是一种基于JavaScript语言的轻量级的数据交换格式

    2.JSON数据是一系列键值对的集合

    3.JSON已经被大多数开发人员接受,在网络数据的传输当中应用非常广泛

    4.JSON相对于XML来讲解析稍微方便一些

    JSON数据格式的特点 JSON VS XML

    为什么使用 JSON?

    对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

    相比 XML 的不同之处

    • 没有结束标签
    • 更短
    • 读写的速度更快
    • 能够使用内建的 JavaScript eval() 方法进行解析
    • 使用数组
    • 不使用保留字

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

    名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

    从上到下的符号解说

    [{"name":"zhangsan","age":20},{"name":"lisi","age":30}]

    1.[是开始解析数组

    2. {开始解析对象

    3."name":"zhangsan"解析解析键值对

    4."age":20解析解析键值对

    5.  }解析对象结束

    6.     {开始解析对象

    7."name":"lisi" 解析键值对 

    8."age":30  解析键值对 

    9.    }解析对象结束

    10.    ] 解析数组结束

     输出结果:

    上面是输出结果,下面是具体代码实现:

    这段代码讲解如何用的 JsonReader 
     1 public class JsonUtils{
     2     public void parseJson(String jsonData){
     3         try{
     4             //如果需要解析JSON数据,首先要生成一个JsonReader对象
     5             JsonReader reader = new JsonReader(new StringReader(jsonData));
     6             reader.beginArray();    //开始解析数组
     7             while(reader.hasNext()){    //hasNext就是 有没有下一组 键值对
     8                 String tagName = reader.nextName();        //reader.nextName()  得到下一个键值对的Name
     9                 if(tagName.equals("name")){      
    10                     System.out.println("name--->" + reader.nextString());
    11                 }
    12                 else if(tagName.equals("age")){        //age是 数字,不用加引号
    13                     System.out.println("age--->" + reader.nextInt());   //nextInt 得到下一个 键值对的 整形数字  
    14                 }
    15                 
    16             } 
    17             reader.endObject();
    18         }
    19         reader.endArray();
    20     }
    21     catch(Exception e){
    22         e.printStackTrace();    
    23    }
    24 }
    25 }
    public class MainActivity extends Activity{
        //  \" 转义字符
        private string jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
        private Button button;
    
        public void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            button = (Button)findViewById(R.id.buttonId);
            button.setOnClickListener(new ButtonListener());
        }
    
        private class ButtonListener implements OnClickListener{
        
            public void onClick(View v){
                JsonUtils jsonUtils = new JsonUtils();
                jsonUtils.parseJson(jsonData);        
            }
        }
    }
  • 相关阅读:
    Redis
    Linux 命令
    Linux 命令
    Networking
    Networking
    MySQL(5.6) 函数
    MySQL 中事务、事务隔离级别详解
    程序人生:搜索引擎被禁用,你还会写代码吗?
    程序人生:搜索引擎被禁用,你还会写代码吗?
    程序员幽默:老板让明天带条鱼来大家观察
  • 原文地址:https://www.cnblogs.com/firecode/p/2478180.html
Copyright © 2011-2022 走看看