http://www.cnblogs.com/jianyungsun/p/6647203.html

在JSON官网我们可以查看到各个语法对json的支持,对于java来说比较成熟的是google-gson。  
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency> public void jsonParser(){ // 创建json解析器
JsonParser parser = new JsonParser();
// 使用解析器解析json数据,返回值是JsonElement,强制转化为其子类JsonObject类型
JsonObject object = null;
try {
object = (JsonObject) parser.parse(new FileReader("C:\\Users\\yf-mypc\\Desktop\\test.json"));
} catch (JsonIOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonSyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // 使用JsonObject的get(String memeberName)方法返回JsonElement,再使用JsonElement的getAsXXX方法得到真实类型
System.out.println("cat = " + object.get("cat").getAsString());
    // 使用JsonObject的get(String memeberName)方法返回JsonElement,再使用JsonElement的getAsXXX方法得到真实类型
System.out.println("cat = " + object.get("cat").getAsString()); // 遍历JSON数组
JsonArray languages = object.getAsJsonArray("languages");
for (JsonElement jsonElement : languages) {
JsonObject language = jsonElement.getAsJsonObject();
System.out.println("id = " + language.get("id").getAsInt() + ",ide = " + language.get("ide").getAsString() + ",name = " + language.get("name").getAsString());
} System.out.println("pop = " + object.get("pop").getAsString());
}
现在编写程序解析以下的test.json: { "cat":"it", "languages":[ {"id":1,"ide":"Eclipse","name":"Java"}, {"id":2,"ide":"Xcode","name":"Swift"}, {"id":3,"ide":"Visual Studio","name":"C#"} ], "pop":true }
     public void jsonParser(String jsonStr){

          JsonParser parser = new JsonParser();  // 创建json解析器
JsonObject object = null;// 使用解析器解析json数据,返回值是JsonElement,强制转化为其子类JsonObject类型
try {
object = (JsonObject) parser.parse(jsonStr);
} catch (JsonIOException e) {
e.printStackTrace();
} catch (JsonSyntaxException e) {
e.printStackTrace();
} // 使用JsonObject的get(String memeberName)方法返回JsonElement,再使用JsonElement的getAsXXX方法得到真实类型
System.out.println("systemTime = " + object.get("systemTime").getAsString());
System.out.println("code = " + object.get("code").getAsString());
JsonObject data = (JsonObject) object.get("data");
System.out.println("token = " + data.get("token").getAsString() + ",userId = " + data.get("userId").getAsInt() + ",username = " + data.get("username").getAsString()); } jsonStr:
{"code":0,"message":"","systemTime":"2017-05-11 16:29:27","data":{"token":"6d51ba2023d34549b02b2b4733138deb_2","userId":2,"username":"empp","showname":"empp","accType":0,"orgMemberId":0}} 注意:data这里不是数组 ,所以不能按照上面那样写


google-gson 解析json的更多相关文章

  1. Google Gson解析Json数据应用实例

    转自:http://lixigao449778967.blog.163.com/blog/static/24985164201269105928783/ 1.需要的Jar包 1) Google Gso ...

  2. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. 使用Gson解析json

    前边的博客说过将json解析成java的方法,使用的是 这几个jar包,但是在解析时层遇到一个问题,就是在将时间字符串转换为java的Timestamp对象时会抛出异常,这个问题一直放在哪里没有去解决 ...

  4. 大话JSON之Gson解析JSON

    (三)解析Json数组(多条Json数据) 比如有如下Json数据: [{'name':'John', 'grade':[{'course':'English','score':100},{'cour ...

  5. Android中使用Gson解析JSON数据的两种方法

    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下   Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...

  6. 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

    1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...

  7. $Java-json系列(一):用GSON解析Json格式数据

    GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

  8. Android中使用Gson解析JSON数据

      Android中使用Gson解析JSON数据 在Android中可以使用Gson解析JSON数据 首先,从 code.google.com/p/google-gson/downloads/list ...

  9. Android--------使用gson解析json文件

    ##使用gson解析json文件 **json的格式有两种:** **1. {}类型,及数据用{}包含:** **2. []类型,即数据用[]包含:** 下面用个例子,简单的介绍gson如何解析jso ...

  10. 【Android进阶】Gson解析json字符串的简单应用

    在客户端与服务器之间进行数据传输,一般采用两种数据格式,一种是xml,一种是json.这两种数据交换形式各有千秋,比如使用json数据格式,数据量会比较小,传输速度快,放便解析,而采用xml数据格式, ...

随机推荐

  1. PAT1048. Find Coins(01背包问题动态规划解法)

    问题描述: Eva loves to collect coins from all over the universe, including some other planets like Mars. ...

  2. Python内置函数(47)——vars

    英文文档: vars([object]) Return the __dict__ attribute for a module, class, instance, or any other objec ...

  3. WPF 自定义Calendar样式(日历样式,周六周日红色显示)

    一.WPF日历控件基本样式 通过Blend获取到Calendar需要设置的三个样式CalendarStyle.CalendarButtonStyle.CalendarDayButtonStyle.Ca ...

  4. UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 1987: illegal multibyte sequence

    在爬取 url = "http://stats.meizhou.gov.cn/show/index/1543/1689" 时出现了问题: UnicodeEncodeError: ' ...

  5. python网络爬虫与信息提取 学习笔记day2

    Day2: 查看robots协议: 查看京东的robots协议 查看百度的robots协议,可以看到百度拒绝了搜狗的爬虫233 爬取京东商品页面相关信息: import requests url = ...

  6. 【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!

    工欲善其事,必先利其器.在开始正式的教程之前我们先来聊聊准备工作. 管理工具会VSTS. 代码管理会用GITHUB. 服务器会用Azure. 所有的东西都是利用现有服务.不会说自己从虚拟机开始玩.我们 ...

  7. C#Json转DataTable

    需求:有一个log文件,需要整理成Excel,日志文件里面的数据都是json字符串 思路是,把Json字符串转换成DataTable,然后导出到Excel 在网上找了一些资料,整理了以下三种类型的Js ...

  8. in成员资格符

    #in成员资格符 name='小树' '小'in name# 返回True '大树'in name#返回False

  9. 0418 jQuery笔记(添加事件、each、prop、$(this))

    1.添加点击事件.each.prop.$(this) //全选框的被动操作 //定义一个标志保存最终状态 var flag = false; //为每一个选择框添加点击事件,数组.click() $( ...

  10. [C#]设计模式-建造者模式-创建型模式

    介绍完工厂模式,现在来看一下建造者模式.建造者模式就是将一系列对象组装为一个完整对象并且返回给用户,例如汽车,就是需要由各个部件来由工人建造成一个复杂的组合实体,这个复杂实体的构造过程就被外部化到一个 ...