json的解析和生成
相比于xml,json的主要特点是数据小,解析速度快,但是描述性差。
java中常见的json解析方法有Gson、Jackson、JSON.simple。
从解析速度上来看,Gson适合解析小数据量,Jackson适合解析大数据量的,JSON.simple解析大数据量和小数据量速率都很快。
先展示一下接下来要生成和解析的json数据:
{
"users": [
{
"phone": "138****",
"pwd": "123456",
"username": "zhangsan"
},
{
"phone": "158****",
"pwd": "abc",
"username": "lisi"
}
]
}
一、org.json
这个是android自带的解析方法。
生成:
public static String createJson() {
JSONObject json = new JSONObject();
JSONArray jsonUsers = new JSONArray();
json.put("users", jsonUsers);
JSONObject jsonUser1 = new JSONObject();
JSONObject jsonUser2 = new JSONObject();
jsonUsers.put(jsonUser1);
jsonUsers.put(jsonUser2);
jsonUser1.put("username", "zhangsan");
jsonUser1.put("pwd", "123456");
jsonUser1.put("phone", "138****");
jsonUser2.put("username", "lisi");
jsonUser2.put("pwd", "abc");
jsonUser2.put("phone", "158****");
return json.toString();
}
解析:
public static void parseJson(String jsonStr){
JSONObject json =new JSONObject(jsonStr);
JSONArray jsonUsers=json.getJSONArray("users");
System.out.println(jsonUsers.length());
for (int i = 0; i < jsonUsers.length(); i++) {
JSONObject jsonUser=(JSONObject) jsonUsers.get(i);
System.out.print("user"+i+"[");
System.out.print("username:"+jsonUser.get("username"));
System.out.print(", pwd:"+jsonUser.get("pwd"));
System.out.println(", phone:"+jsonUser.get("phone")+"]");
}
}
二、Gson
解析:
首先得创建相应的类:
public class User {
private String phone;
private String pwd;
private String username;
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@Override
public String toString() {
return "User [phone=" + phone + ", pwd=" + pwd + ", username=" + username + "]";
}
}
public class Users {
private List<User> users;
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
@Override
public String toString() {
return "Users [users=" + users + "]";
}
}
解析方法:
public static void parseJson(String jsonStr) {
Gson gson=new Gson();
Users users=gson.fromJson(jsonStr, Users.class);
System.out.println(users);
}
如何json数据整体就是一个数组,如下:
[
{
"phone": "138****",
"pwd": "123456",
"username": "zhangsan"
},
{
"phone": "158****",
"pwd": "abc",
"username": "lisi"
}
]
解析方法:
public static void parseJson(String jsonStr) {
Gson gson=new Gson();
List<User> users;
users=gson.fromJson(jsonStr, new TypeToken<List<User>>(){}.getType());
System.out.println(users);
}
生成:
public static <T> String createJson(T t){
Gson gson=new Gson();
String rt=gson.toJson(t);
return rt;
}
三、JSON.simple
public static void parseJson(String filename) {
try {
JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader(filename));
JSONObject jsonObject = (JSONObject) obj;
JSONArray jsonUsers = (JSONArray) jsonObject.get("users");
Iterator<JSONObject> iterator = jsonUsers.iterator();
while (iterator.hasNext()) {
JSONObject jsonUser = iterator.next();
System.out.print("user[");
System.out.print("username:" + jsonUser.get("username"));
System.out.print(", pwd:" + jsonUser.get("pwd"));
System.out.println(", phone:" + jsonUser.get("phone") + "]");
}
} catch (IOException | ParseException e) {
e.printStackTrace();
}
}
public static void createJson() {
JSONObject json = new JSONObject();
JSONArray jsonUsers = new JSONArray();
json.put("users", jsonUsers);
JSONObject jsonUser1 = new JSONObject();
JSONObject jsonUser2 = new JSONObject();
jsonUsers.add(jsonUser1);
jsonUsers.add(jsonUser2);
jsonUser1.put("username", "zhangsan");
jsonUser1.put("pwd", "123456");
jsonUser1.put("phone", "138****");
jsonUser2.put("username", "lisi");
jsonUser2.put("pwd", "abc");
jsonUser2.put("phone", "158****");
System.out.println(json.toJSONString());
}
json的解析和生成的更多相关文章
- golang xml和json的解析与生成
golang中解析xml时我们通常会创建与之对应的结构体,一层层嵌套,完成复杂的xml解析. package main; import ( "encoding/xml" " ...
- iOS开发之JSON格式数据的生成与解析
本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据? ...
- android Json 解析和生成
什么是json: JSON即JavaScript Object Natation的简称,它是一种轻量级的数据交换格式,非常适合服务器与JavaScript的交互.JSON易于人阅读和编写.同时也易于机 ...
- Json1:使用gson解析、生成json
Json解析: 1.json第三方解析包:json-lib.gson.jackson.fastjson等2.Google-gson只兼容jdk1.5版本以上:JSON-lib分别支持1.4和1.53. ...
- 转载 -- iOS开发之JSON格式数据的生成与解析
本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据? ...
- Android原生生成JSON与解析JSON
JSON数据是一种轻量级的数据交换格式,在Android中通常应用于client与server交互之间的传输数据.像如今在网上有非常多解析JSON数据的jar包,可是归根究竟用的都是Android原生 ...
- 使用gson解析,生成Json
包:gson-2.3.jarJson文本解析为Java对象:Java对象生成为Json文本 import com.google.gson.Gson; public class TestGson { c ...
- JSON数据解析 基础知识及链接收集
JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...
- 浅谈JSON数据解析方法
JSON数据解析 JSON是什么?? 如何把JSON数据解析出来 如何把一个字典转换为JSON JSON详细介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交 ...
随机推荐
- elementUI实现日期框选中项文本高亮
{ margin: 0; font: 12px "Helvetica Neue" } p.p2 { margin: 0; font: 12px "PingFang SC& ...
- MediaCodec编码结合FFmpeg封装流
在Android平台上合成视频一般使用MediaCodec进行硬编码,使用MediaMuxer进行封装,但是因为MediaMuxer在某些机型上合成的视频在其他手机上播放会出现问题,而且只支持一个音频 ...
- python之routes入门
一.入门 from routes import Mapper map = Mapper() # 创建一个mapper()路由实例对象 # connect注册路由信息 # 路由名称'zbj', 路径是 ...
- Java 树结构实际应用 四(平衡二叉树/AVL树)
平衡二叉树(AVL 树) 1 看一个案例(说明二叉排序树可能的问题) 给你一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST), 并分析问题所在. 左边 BST 存在的问题分析: ...
- Python基础之:Python中的异常和错误
目录 简介 Python中的内置异常类 语法错误 异常 异常处理 抛出异常 异常链 自定义异常 finally 简介 和其他的语言一样,Python中也有异常和错误.在 Python 中,所有异常都是 ...
- Python爬虫系列之爬取美团美食板块商家数据(一)
主要思路 目的: 根据输入的城市名,爬取该城市美团美食板块所有商家的数据.数据包括: 店名.评分.评论数量.均价.地址, 并将这些数据存入Excel中. 最后尝试对爬取到的数据做一个简单的分析. 克服 ...
- Android 之 SimpleAdapter 学习笔记
•SimpleAdapter简介 simpleAdapter 的扩展性最好,可以定义各种各样的布局出来: 可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框) ...
- python3使用kivy生成安卓程序
技术背景 虽然现在苹果占据了很大一部分的市场,但是从销量数据来看,安卓还是占据了人口的高地.这里我们介绍一个用python的kivy+buildozer来进行安卓APP开发的简单教程,从整个过程中来看 ...
- String 的不可变真的是因为 final 吗?
尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 「CS-Wiki」Gitee ...
- 使用Vscode 开发调试 C/C++ 项目
需要安装的扩展 C/C++ 如果是远程 Linux上开发还需要安装 Remote Development 创建工作目录后,代码远程克隆... 省略.. 创建项目配置文件,主要的作用是代码智能提示,错误 ...