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

1:什么是Json?

2:Json数据格式的特点?

3:使用Gson解析Json数据

(1)Json:Javascript 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:

1:Json和xml的数据可读性基本相同;

2:Json和xml同样拥有丰富的解析手段;

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

4:Json与Javascript的交互性更加方便

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

下面是一个Json的例子:

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

具体介绍(解析方式):

{“name”:”zhangshan”,”age”,:} json的键值是string,必须带双引号,然而又跟java里面的冲突,必须使用转义字符以便于区分。

Json解析数据的形式:其中,{}代表一个Json对象,[]代表Json对象的数据。

[{“name”:”zhangshan”,”age”,:} ,{“name”:”lisi”,”age”,:}]

:[代表开始解析数组

:{ 开始解析对象

:解析键值对“name”:”zhangshan”

:解析键值对:”age”,:

:解析对象结束

:开始解析另一个对象{

:解析键值对“name”:”lisi”

:解析键值对:”age”,:

:解析对象结束

:解析数组结束

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

然后将其

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

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

具体解析代码:

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

 package cn.edu.bzu.data_aanalysis;

 import java.io.StringReader;

 import android.util.JsonReader;

 public class JsonUtil
{
public void parseJson(String jsonData)
{
try
{
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();// 开始解析数组
while (reader.hasNext())// 判断数组里面有没有下一个Json对象 {
reader.beginObject();// 开始解析对象
while (reader.hasNext())
{
// 解析完第一个键值对,解析另一个键值对
String tagName = reader.nextName();
if (tagName.equals("name"))
{
System.out.println("name---->" + reader.nextString());// name是String类型
} else if (tagName.equals("age"))
{
System.out.println("age---->" + reader.nextInt());// age是一个整形数据
}
}
reader.endObject();// 解析对象结束
}
reader.endArray();
} catch (Exception e)
{
e.printStackTrace();
}
} }

2:MainActivity.java:

 package cn.edu.bzu.data_aanalysis;

 import java.io.StringReader;

 import android.os.Bundle;
import android.app.Activity;
import android.util.JsonReader;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity
{
private String JsonData="[{\"name\":\"Cherish\",\"age\":21},{\"name\":\"LXY\",\"age\":21}]";
private Button button;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button) findViewById(R.id.button);
button.setOnClickListener(new ButtonListener());
}
private class ButtonListener implements OnClickListener{
@Override
public void onClick(View view)
{
JsonUtil jsonUtil=new JsonUtil();
jsonUtil.parseJson(JsonData); } } }

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

运行结果:

Json解析数据的更多相关文章

  1. IOS-网络(JSON解析数据与XML解析数据)

    一.JSON解析数据 // // VideoModel.h // IOS_0130_网络视频 // // Created by ma c on 16/1/30. // Copyright © 2016 ...

  2. Json解析数据的简单使用

    简单的记一下Json解析的简单实用: 使用场景:后台传到客户端的Json数据,类似于: string jsonObject="{'Name':'Jack','Age':25}"; ...

  3. IOS-网络(HTTP请求、同步请求、异步请求、JSON解析数据)

    // // ViewController.m // IOS_0129_HTTP请求 // // Created by ma c on 16/1/29. // Copyright © 2016年 博文科 ...

  4. [Cannot deserialize JSON array into type] NewtonSoft.Json解析数据出错原因

    今天用NewtonSoft.JSon解析一个天气数据,数据格式如: {"status":1,"detail":"\u6570\u636e\u83b7\ ...

  5. iOS 中json解析数据出现中文乱码的问题

    一般服务器的编码格式都是UTF8,这样通过json解析下来的的数据,一般中文是不会出现乱码,但是如果服务器的编码格式不是UTF8,通过json解析的数据中的中文容易出现luan乱码,怎么解决这个问题呢 ...

  6. Json解析数据导致顺序改变问题

    json解析的时候,通常顺序会发生改变,如果我们有保持原有顺序的需求的话可以通过如下方式 1.使用fastJson的Feature.OrderedField JSONObject respJson = ...

  7. iOS:二叉树多级表格的使用,使用三方库TreeTableView-master实现对json解析数据的递归遍历整理成树状结构

    在项目中,我们有时需要使用二叉树来实现多级表格的递归遍历查询,如果对二叉树比较懂,那么写起来其实也不费事,为了节省开发时间,下面介绍一下第三方库TreeTableView-master,这个三方库上给 ...

  8. 解决有关null闪退及json解析数据中null的问题

    程序在获取某些数据之后莫名崩溃.其实很早就发现了原因: 由于服务器的数据库中有些字段为空, 然后以Json形式返回给客户端时就会出现这样的数据: "somevalue":null ...

  9. html中通过js获取接口JSON格式数据解析以及跨域问题

    前言:本人自学前端开发,一直想研究下js获取接口数据在html的实现,顺利地找到了获取数据的方法,但是有部分接口在调用中出现无法展示数据.经查,发现时跨域的问题,花费了一通时间,随笔记录下过程,以方便 ...

随机推荐

  1. [ SHELL编程 ] 编程常用的ORACLE相关命令

    本文主要描述shell编程中常用的Oracle相关命令. 1.sqlplus -L/-S参数 sqlplus -L user/password #-L参数表示用户只尝试登录一次, 而不是在出错时再次提 ...

  2. CentOS 7下源码安装zabbix服务

    安装环境需要LAMP或者LNMP先搭建好 在此我使用上一篇搭建好的LNMP环境来安装zabbix 1.下载zabbix http://www.zabbix.com/download.php 2.安装及 ...

  3. Android 深入浅出 - 进程生命周期(Process Lifecycle)

    Android 5 个进程等级 1. Foreground Process : 2 .Visible Process : 3. Service Process : 4. Background Proc ...

  4. Hibernate学习笔记1.1(简单插入数据)

    Hibernate是把以前的jdbc连接数据库的操作进行了一系列友好的封装,最好只用调用save即可,即将sql语句的这部分操作转化为面向对象的 Hibernate资源准备: 文档目录结构: 1.网址 ...

  5. ArcGIS案例学习笔记4_2_水文分析批处理地理建模

    ArcGIS案例学习笔记4_2_水文分析批处理地理建模 联系方式:谢老师,135_4855_4328,xiexiaokui#139.com 概述 计划时间:第4天下午 目的:自动化,批量化,批处理,提 ...

  6. 在linux和Mac中访问某个文件夹中所有的文件

    在linux和Mac中访问某个文件夹中所有的文件——输出所有的文件名 #include <stdio.h> #include <dirent.h> int main() { s ...

  7. MySQL内连接,左(外)连接,右(外)连接

    用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). MySQL版 ...

  8. Linux命令_2

    P42 远程管理 命令 目标 关机/重启 shutdown 查看或配置网卡信息 ifconfig ping 远程登录和复制文件 ssh scp 01.关机/重启 命令: shutdown  选项  时 ...

  9. Shared Preferences

    [Shared Preferences] 1.SharedPreferences  class. Interface for accessing and modifying preference da ...

  10. 查询结果null替换为0

    xxx表示字段名 mysql数据库 : ifnull( xxx , 0 ) oracle数据库:  NVL(xxx , 0 )