JSON基础篇之-----JSON的解析和生成
程序员文章站
2024-02-04 09:00:34
...
一、json的简介
- JSON(javaScript Object Notation ,JS对象标记),是一种轻量级的数据交换。
- JSON是存储文本信息的语法 类似于XML
- JSON 比 XML 更小 更快 更易解析
- JSON数据作为目前网络主流的数据传输格式之一 应用十分广泛
- JSON使用javascript语法来表述对象 但是JSON是独立于语言和平台的
- JSON解析器 和 JSON库支持许多不同的编程语言
二、JSON和xml的异同
不同点:
- json没有结束标签
- 更短
- 读写的速度更快
- 能够使用内建的javascript eval()方法进行解析
- 使用数组
- 不能使用保留字
相同:
- JSON是纯文本
- JSON具有可读性
- JSON可以通过AJAX进行传输
二、JSON的语法
- 【】:表示数组
- { }:表示对象
- " ":表示属性名字或字符串类型的值
- , : 多个属性的间隔符或者多个元素的间隔符
例如:
对象的存储格式:
- String json = "{'id':33,'name':'离家','age':12}";
数组的存储格式
- String json = "['北京','上海','广州']";
数组中存储对象:
- JSON格式:
- [
- {name:"张三",age:23},
- {name:"李四",age:23},
- {name:"王五",age:23}
- ]
三 、JSON的解析和生成
1、原生解析,古老的解析方法
a:导入jar包:json-lib.jar 链接:https://pan.baidu.com/s/1B6HUiUJdMsOLYPU4IQiYlw 密码:1ac2
b:根据json创建实体类 Grade(id,name,stus) Student(id,name,age)
c:解析JSON重要的代码:
@Test
public void test3(){
String json = "{id:1,name:'清华',stus:[{id:102,name:'花花',age:56},{id:1093,name:'kk',age:34}]}";
try {
//创建JSON对象
JSONObject jsonObject = new JSONObject(json);
Grade grade = new Grade();
grade.setId(jsonObject.getInt("id"));
grade.setName(jsonObject.getString("name"));
JSONArray jsonArray = jsonObject.getJSONArray("stus");
List<Student> list = new ArrayList<>();
for(int i = 0 ;i<jsonArray.length();i++ ){
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
Student s = new Student();
s.setAge(jsonObject2.getInt("age"));
s.setId(jsonObject2.getInt("id"));
s.setName(jsonObject2.getString("name"));
list.add(s);
}
grade.setStus(list);
System.out.println(grade);
} catch (JSONException e) {
e.printStackTrace();
}
}
D:生成JSON的重要代码 对象-------》json字符串
@Test
public void createJSOn(){
Student s = new Student();
s.setAge(23);
s.setId(11);
s.setName("美肌");
//原生方式解析-->json
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("id", s.getId());
jsonObject.put("name", s.getName());
jsonObject.put("age", s.getAge());
System.out.println(jsonObject.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
2、fastJSON (alibaba )
主要方法:
- JSON.parseObject(json,Class<>); json对象--->对象
- JSON.parseArray(json,Class<>); json数组--->集合
- JSON.toJSONString(对象/集合); 对象/集合---->json
解析json的重要代码 json---->对象
@Test
public void fastJson2(){
String json = "[{id:101,name:'天天',age:24},{id:122,name:'密码',age:22}]";
List<Student> stu = JSON.parseArray(json, Student.class);
System.out.println(stu);
}
@Test
public void fastJson3(){
String json ="{id:1,name:'复旦',stus:[{id:22,name:'meimi',age:13},{id:34,name:'小法',age:23}]}";
Grade d =JSON.parseObject(json, Grade.class);
System.out.println(d);
}
生成json的重要代码 对象---->json
@Test
public void createJson1(){
Student s = new Student();
s.setAge(23);
s.setId(11);
s.setName("美肌");
Object json = JSON.toJSON(s); //对象
System.out.println(json);
List<Student> list =new ArrayList<>();
for(int i =0 ;i<10;i++){
Student s1 = new Student();
s1.setAge(i+10);
s1.setName("华思凡"+i);
s1.setId(i);
list.add(s1);
}
//集合转json
String jsonArray = JSON.toJSONString(list); //集合
System.out.println(jsonArray);
}
3、Gson (Google )
Gson gson = new Gson();
json--->对象
- gson.formJson(json,Class<>); json--->对象
- gson.fromJson(json,new TypeToken<List<Student>>(){}.getType()); json数组--->集合
对象-->json
- gson.toJson(对象/集合); 对象--->json对象
解析json的重要代码
@Test
public void test2() throws JSONException{
String json = "[{id:34,name:'呵呵',age:12},{id:32,name:'乐乐',age:12}]";
//创建JSON对象
Gson gson = new Gson();
List<Student> s = gson.fromJson(json,new TypeToken<List<Student>>(){}.getType());
System.out.println(s);
System.out.println("第一种:上面的");
//第二种
JSONArray jsonArray = new JSONArray(json);
for(int i = 0;i<jsonArray.length();i++){
Student s1 = gson.fromJson(jsonArray.getString(i),Student.class);
System.out.println(s1);
}
}
@Test
public void test3(){
String json = "{id:1,name:'清华',stus:[{id:102,name:'花花',age:56},{id:1093,name:'kk',age:34}]}";
Gson gson =new Gson();
Grade d =gson.fromJson(json, Grade.class);
System.out.println(d);
}
生成json的重要代码 gson.toJson(s) gson.toJson(list);
@Test
public void test4(){
Student s = new Student();
s.setAge(12);
s.setId(33);
s.setName("梨花");
Gson gson = new Gson();
System.out.println(gson.toJson(s));
List<Student> list = new ArrayList<Student>();
for(int i = 0;i<10;i++){
Student s1 = new Student();
s1.setId(i);
s1.setName("小美美"+i);
s1.setAge(33);
list.add(s1);
}
String l = gson.toJson(list);
System.out.println(l);
}
上一篇: 推荐常用PHP函数索引
下一篇: 一维/二维数组边缘操作实验
推荐阅读
-
JSON基础篇之-----JSON的解析和生成
-
iOS开发网络篇 一一 复杂的JSON解析-数据显示
-
maven使用和json解析的两遍文章地址
-
Unity 基础 之 实现简单的Android移动端本地数据读取与写入封装(简单加密写入,解密读取 json 数据)
-
php生成的json传给android gson无法解析
-
谈谈iOS开发之JSON格式数据的生成与解析
-
使用JSONObject生成和解析json的方法
-
javascript解析ajax返回的xml和json格式数据实例详解
-
jQuery解析返回的xml和json方法详解
-
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在