Json解析数据

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”,: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文件夹,将jar包copy到该文件夹。

最后一步操作:将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 }

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

运行结果:

时间: 2024-10-23 19:36:14

Json解析数据的相关文章

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

一般服务器的编码格式都是UTF8,这样通过json解析下来的的数据,一般中文是不会出现乱码,但是如果服务器的编码格式不是UTF8,通过json解析的数据中的中文容易出现luan乱码,怎么解决这个问题呢? 一般都是通过转码来解决,但是直接转码,是不能达到效果的,例如 [jsonStringstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] 这样直接转码是达不到效果的. 解析数据的时候,可以先把数据存放在NSdata对象中,

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

1 // 2 // ViewController.m 3 // IOS_0129_HTTP请求 4 // 5 // Created by ma c on 16/1/29. 6 // Copyright © 2016年 博文科技. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 #import "MBProgressHUD+MJ.h" 11 12 @interface ViewController

Json解析数据的简单使用

简单的记一下Json解析的简单实用: 使用场景:后台传到客户端的Json数据,类似于: string jsonObject="{'Name':'Jack','Age':25}"; string jsonArray = "[{'Name':'Jhon','Age':23},{'Name':'Jack','Age':25}]"; 客户端可以定义一个类,类中的属性对应于数据中相应的字段 class Student { public string Name { get; s

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

json解析的时候,通常顺序会发生改变,如果我们有保持原有顺序的需求的话可以通过如下方式 1.使用fastJson的Feature.OrderedField JSONObject respJson = JSONObject.parseObject(jsonStr, Feature.OrderedField); 2.初始化JSONObject的时候 JSONObject(boolean ordered); 3.可以使用Google的Gson,使用gson解析的话是怎么传就是什么顺序 JsonObj

【logstash】 - 使用json解析数据

filter-json:http://www.logstash.net/docs/1.4.2/filters/json json数据: {"account_number":995,"balance":21153,"firstname":"Phelps","lastname":"Parrish","age":25,"gender":"M&q

Android JSON解析数据

一:json的简介 json指的是Javascript对象表示法,是一种轻量级文本数据交换格式,类似于XML,但比XML更小.更快.更易解析 二:Json与XML的比较(copy网上的) 优点: 比xml格式简单: json是更好的数据交换格式:xml是更好的文档交换格式: json更易于机器阅读,使用简单的客户端库或者自身支持(javascript): json可被浏览器客户端支持: 可支持各种通用的数据结构,记录.列表.树: 21种语言支持可解析和生成json格式 缺点: 没有xml中类似C

AFNetworking网上加载数据及JSON解析

引用第三方库AFNetworking #import "AFNetworking.h" #import "UIKit+AFNetworking.h" - (void)downloadData { NSString *urlString = [NSString stringWithFormat:LIMIT_URL,_page,_categoryId]; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOpe

iOS之网络数据下载和JSON解析

iOS之网络数据下载和JSON解析 简介 在本文中笔者主要给大家介绍IOS如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载显示. 涉及到的知识点: 1.NSURLConnection 异步下载和封装 2.JSON格式和JSON格式解析 3.数据显示和使用SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 什么是网络应用? 需要通过联网进行操作的应用 网络应用的程序结构? c/s结构:即客户端/服务端 常见的

Android上解析Json格式数据

package com.practice.json; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class JsonDemo extends Activity { /*http://www.hui