zoukankan      html  css  js  c++  java
  • Json解析数据

    Json数据解析(重点网址推荐:www.json.org   code.google.com/   https://www.json.com/)

    1:什么是Json

    2Json数据格式的特点?

    3:使用Gson解析Json数据

    (1)JsonJavascript Object Notation;

    JSON is a light-weight text-based open standard designed for human-readable data. It is the most widely used format for exchanging data on the web. It originates from the JavaScript language and is represented with two primary data structures: ordered lists (recognized as 'arrays') and name/value pairs (recognized as 'objects').

    In JSON, they take on these forms:

    An object is an unordered set of name/value pairs. An object begins with { (left brace) and ends with } (right brace). Each name is followed by : (colon) and the name/value pairs are separated by , (comma).

    (2)Json数据是一系列键值对的集合;

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

    (4)Json相对于XML来讲,解析起来相对方便。

    Json xml

    1Jsonxml的数据可读性基本相同;

    2Jsonxml同样拥有丰富的解析手段;

    3Json相对于xml来讲,数据体积小

    4JsonJavascript的交互性更加方便

    5Json对数据的描述性系相对较差。

    下面是一个Json的例子:

    键值对的形式,值又可以是键值对。

    具体介绍(解析方式):
    
    {“name”:”zhangshan”,”age”,:20} json的键值是string,必须带双引号,然而又跟java里面的冲突,必须使用转义字符以便于区分。
    
    Json解析数据的形式:其中,{}代表一个Json对象,[]代表Json对象的数据。
    
    [{“name”:”zhangshan”,”age”,:20} ,{“name”:”lisi”,”age”,:19}]
    
    1:[代表开始解析数组
    
    2:{ 开始解析对象
    
    3:解析键值对“name”:”zhangshan”
    
    4:解析键值对:”age”,:20
    
    5:解析对象结束
    
    6:开始解析另一个对象{
    
    7:解析键值对“name”:”lisi”
    
    8:解析键值对:”age”,:19
    
    9:解析对象结束
    
    10:解析数组结束

    在解析数据使用api之前,必须从code.google.com/p/google-gson/downloads/list下载对应的jar包:

     

    然后将其

     

    将工作空间中,新创建一个libs文件夹,将jarcopy到该文件夹。

    最后一步操作:将jar包加入到构建路径中。

    具体解析代码:

    1:在src文件夹下,新建一个包,创建JsonUtils类:

     1 package cn.edu.bzu.data_aanalysis;
     2 
     3 import java.io.StringReader;
     4 
     5 import android.util.JsonReader;
     6 
     7 public class JsonUtil
     8 {
     9     public void parseJson(String jsonData)
    10     {
    11         try
    12         {
    13             JsonReader reader = new JsonReader(new StringReader(jsonData));
    14             reader.beginArray();// 开始解析数组
    15             while (reader.hasNext())// 判断数组里面有没有下一个Json对象
    16 
    17             {
    18                 reader.beginObject();// 开始解析对象
    19                 while (reader.hasNext())
    20                 {
    21                     // 解析完第一个键值对,解析另一个键值对
    22                     String tagName = reader.nextName();
    23                     if (tagName.equals("name"))
    24                     {
    25                         System.out.println("name---->" + reader.nextString());// name是String类型
    26                     } else if (tagName.equals("age"))
    27                     {
    28                         System.out.println("age---->" + reader.nextInt());// age是一个整形数据
    29                     }
    30                 }
    31                 reader.endObject();// 解析对象结束
    32             }
    33             reader.endArray();
    34         } catch (Exception e)
    35         {
    36             e.printStackTrace();
    37         }
    38     }
    39 
    40 }

    2:MainActivity.java

     1 package cn.edu.bzu.data_aanalysis;
     2 
     3 import java.io.StringReader;
     4 
     5 import android.os.Bundle;
     6 import android.app.Activity;
     7 import android.util.JsonReader;
     8 import android.view.Menu;
     9 import android.view.View;
    10 import android.view.View.OnClickListener;
    11 import android.widget.Button;
    12 
    13 public class MainActivity extends Activity
    14 {
    15    private String JsonData="[{"name":"Cherish","age":21},{"name":"LXY","age":21}]";
    16    private Button button;
    17     protected void onCreate(Bundle savedInstanceState)
    18     {
    19         super.onCreate(savedInstanceState);
    20         setContentView(R.layout.activity_main);
    21         button=(Button) findViewById(R.id.button);
    22         button.setOnClickListener(new ButtonListener());
    23     }
    24     private class ButtonListener implements OnClickListener{
    25         @Override
    26         public void onClick(View view)
    27         {
    28             JsonUtil jsonUtil=new JsonUtil();
    29             jsonUtil.parseJson(JsonData);
    30             
    31         }
    32         
    33     }
    34 
    35     
    36 }

    当点击"开始解析"按钮时:

    运行结果:

    这世界上有一种鸟是没有脚的,它只能够一直的飞呀飞呀,飞累了就在风里面睡觉,这种鸟一辈子只能下地一次,那一次就是它死亡的时候。
  • 相关阅读:
    MFC下使用Mysql
    Curl的移植编译以及注意事项
    MFC 封装类为静态链接库
    MFC 任务托盘显示气泡
    MFC 获取本机IP、网络ip和物理地址
    MFC下获取系统内存和当前进程的内存使用情况
    C++ windows客户端支持SSL双向认证
    jdk+tomcat+mysql一键安装脚本
    mysql修改数据库密码
    MFC 任务托盘经常消失问题
  • 原文地址:https://www.cnblogs.com/xuyinghui/p/4662587.html
Copyright © 2011-2022 走看看