JSON的生成和解析
1.什么是JSON?
JSON(JavaScript Object Notation, JS 对象简谱)采用完全独立于编程语言的用文本格式来存储和表示数据的轻量级数据交换格式
2.JSON的作用是什么?
存储和表示数据的文本格式
3.如何编写JSON?
JSON是由2个元素组成
第一个元素,json对象
格式:{名称:数据值,名称:数据值}
名称:数据值----键值对
键值对中的键要由"",键值对中的值字符串和时间日期型的数据需要""。
我们将java对象转换成json对象以后的结果
public class Student{
private int stuid;
private String stuname;
private int stuage;
private String stuaddress;
getXXX()/setXXX()
}
Student stu1=new Student();
stu1.setStuid(1001);
stu1.setStuname("zhangsan");
stu1.setStuage(23);
stu1.setStuaddress("西安");
json对象
{"stuid":1001,"stuname":"zhangsan","stuage":23,"stuaddress":"西安"}
第二个元素,json数组
格式:[具体的数据值/json对象]
我们将java集合/数组转换成json数组以后的结果。
public class Student{
private int stuid;
private String stuname;
private int stuage;
private String stuaddress;
getXXX()/setXXX()
}
Student stu1=new Student();
stu1.setStuid(1001);
stu1.setStuname("zhangsan");
stu1.setStuage(23);
stu1.setStuaddress("西安");
Student stu2=new Student();
stu2.setStuid(1002);
stu2.setStuname("lisi");
stu2.setStuage(24);
stu2.setStuaddress("北京");
Student stu3=new Student();
stu3.setStuid(1003);
stu3.setStuname("wangwu");
stu3.setStuage(25);
stu3.setStuaddress("上海");
List<Student> studentlist=new ArrayList<Student>();
studentlist.add(stu1);
studentlist.add(stu2);
studentlist.add(stu3);
json数组
[
{"stuid":1001,"stuname":"zhangsan","stuage":23,"stuaddress":"西安"},---stu1
{"stuid":1002,"stuname":"lisi","stuage":24,"stuaddress":"北京"},---stu2
{"stuid":1003,"stuname":"wangwu","stuage":25,"stuaddress":"上海"}---stu3
]----studentlist
java数组
String names[]={"zhangsan","lisi","wangwu"};
json数组
["zhangsan","lisi","wangwu"]
我们以后所面临的json数据都是相互嵌套的 ,json数组中由json对象,json对象中由json数组
当我们得到一个及其复杂的json数据后,搞不清楚这个json数据的结构,我们可以利用工具【JSON在线解析及格式化验证 - JSON.cn】得到明晰的json数据的结构
json数据
[
{"stuid":1001,
"stuname":"张三",
"stuage":23,
"address":[{"type":"工作","info":"高新一路"},
{"type":"家庭","info":"丰惠南路"}]},
{"stuid":1002
,"stuname":"李四",
"stuage":24,
"address":[{"type":"工作","info":"高新二路"},
{"type":"家庭","info":"科技四路"}]}
]
4.生成JSON
1.json-simple-1.1.jar第三方的开发包生成json数据
例如:
package com.test;import java.util.List;import org.json.simple.JSONArray;
import org.json.simple.JSONObject;public class JSONHelper {/*** json-simple-1.1.jar第三方的开发包生成json数据* @param studentlist*/public static void createjson1(List<Student> studentlist) {//创建studentlist对应的json数组JSONArray studenlistarray=new JSONArray();for(Student student:studentlist){//创建student对应的json对象JSONObject studentObject=new JSONObject();studentObject.put("stuid", student.getStuid());studentObject.put("syuname", student.getStuname());studentObject.put("stuage", student.getStuage());JSONArray addressarray=new JSONArray();MyAddress myAddress[]=student.getMyAddress();for(MyAddress address:myAddress){JSONObject addressObject=new JSONObject();addressObject.put("type", address.getType());addressObject.put("info", address.getInfo());addressarray.add(addressObject);}studentObject.put("stuaddress",addressarray );studenlistarray.add(studentObject);}String json=studenlistarray.toString();System.out.println(json);}}
2.gson-2.8.0.jar第三方的开发包生成json数据
例如:
package com.test;import java.util.List;import org.json.simple.JSONArray;
import org.json.simple.JSONObject;import com.google.gson.Gson;public class JSONHelper {/*** gson-2.8.0.jar第三发的开发包生成json数据* @param studentlist*/public static void createjson2(List<Student> studentlist) {Gson gson=new Gson();String json=gson.toJson(studentlist);System.out.println(json);}}
3.jackson第三方的开发包生成json数据
例如:
package com.test;import java.util.List;import com.fasterxml.jackson.databind.ObjectMapper;public class JSONHelper {/*** jackson第三方开发包生成json数据* @param studentlist*/public static void createjson3(List<Student> studentlist) {ObjectMapper om=new ObjectMapper();String json="[]";try {json=om.writeValueAsString(studentlist);} catch (Exception e) {// TODO: handle exception}System.out.println(json);}}
4.拼接字符串生json数据
例如:
package com.test;import java.util.List;import com.fasterxml.jackson.databind.ObjectMapper;public class JSONHelper {public static void createjson4(List<Student> studentlist) {StringBuilder stringBuilder=new StringBuilder();stringBuilder.append("[");for(Student student:studentlist){stringBuilder.append("{");stringBuilder.append("\"stuid\":"+student.getStuid()+",");stringBuilder.append("\"stuname\":\""+student.getStuname()+"\",");stringBuilder.append("\"stuage\":"+student.getStuage()+",");stringBuilder.append("\"stuaddress\":[");MyAddress[] myaddress=student.getMyAddress();for(MyAddress address:myaddress){stringBuilder.append("{");stringBuilder.append("\"type\":\""+address.getType()+"\",");stringBuilder.append("\"info\":\""+address.getInfo()+"\"");stringBuilder.append("},");}stringBuilder.deleteCharAt(stringBuilder.lastIndexOf(","));stringBuilder.append("]");stringBuilder.append("},");}stringBuilder.deleteCharAt(stringBuilder.lastIndexOf(","));stringBuilder.append("]");System.out.println(stringBuilder.toString());}}
5.解析JSON
1.json-simple-1.1.jar第三方的开发包解析json数据
package com.test2;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;public class JSONHelper {
/*** 1.json-simple-1.1.jar第三方的开发包解析json数据* @param string* @return*/
public static List<Student> getStudentList(String filename)throws Exception {List<Student> studentlist=new ArrayList<Student>();JSONParser jsonparser=new JSONParser();try {JSONArray studentlistArray=(JSONArray) jsonparser.parse(new FileReader(new File(filename)));for(int i=0;i<studentlistArray.size();i++){Student student=new Student();JSONObject studentJSONObject=(JSONObject) studentlistArray.get(i);long id=(Long)studentJSONObject.get("stuid");int stuid=(int)id;student.setStuid(stuid);String stuname=(String)studentJSONObject.get("stuname");student.setStuname(stuname);long age=(Long)studentJSONObject.get("stuage");int stuage=(int)age;student.setStuage(stuage);JSONArray addressJSONArray=(JSONArray)studentJSONObject.get("address");MyAddress myaddressarr[]=new MyAddress[addressJSONArray.size()];for(int j=0;j<addressJSONArray.size();j++){MyAddress address=new MyAddress();JSONObject addressJSONObject=(JSONObject)addressJSONArray.get(j);String type=(String)addressJSONObject.get("type");String info=(String)addressJSONObject.get("info");address.setType(type);address.setInfo(info);myaddressarr[j]=address;}student.setMyAddress(myaddressarr);studentlist.add(student);}} catch (Exception e) {// TODO: handle exception}return studentlist;
}
}
2.gson-2.8.0.jar第三方的开发包解析json数据
例如:
package com.test2;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;public class JSONHelper {/*** 2.gson-2.8.0.jar第三方的开发包解析json数据* @param string* @return*/
public static List<Student> getStudentList2(String filename) throws Exception {Gson gson=new Gson();Type type=new TypeToken<List<Student>>(){}.getType();return gson.fromJson(new FileReader(filename), type);
}}
3.jackson第三方的开发包解析json数据
package com.test2;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;public class JSONHelper {/*** 3.jackson第三方的开发包解析json数据* @param string* @return* @throws Exception */
public static List<Student> getStudentList3(String filename) throws Exception {List<Student> studentList=new ArrayList<Student>();ObjectMapper objectMapper=new ObjectMapper();InputStreamReader in=new InputStreamReader(new FileInputStream(filename),StandardCharsets.UTF_8);JsonNode studenListArray=objectMapper.readTree(in);for(int i=0;i<studenListArray.size();i++){Student student=new Student();JsonNode studentObject=studenListArray.get(i);int stuid=studentObject.get("stuid").asInt();System.out.println(stuid);student.setStuid(stuid);String stuname=studentObject.get("stuname").asText();student.setStuname(stuname);int stuage=studentObject.get("stuage").asInt();student.setStuage(stuage);JsonNode addressArray=studentObject.get("address");MyAddress myaddress[]=new MyAddress[addressArray.size()];for(int j=0;j<addressArray.size();j++){MyAddress address=new MyAddress();JsonNode addressObject=addressArray.get(j);String type=addressObject.get("type").asText();String info=addressObject.get("info").asText();address.setType(type);address.setInfo(info);myaddress[j]=address;}student.setMyAddress(myaddress);studentList.add(student);}return studentList;
}}
JSON的生成和解析相关推荐
- XML与JSON的生成与解析
1. XML 1.1 XML简介 可标记语言(extensible Markup Language) 特性: XML具有平台无关性,是一门独立的语言 XML具有自我描述性 XML功能: 网络传输文件 ...
- Qt之JSON生成与解析
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...
- c#解析json字符串数组_C#解析JSON字符串总结
JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...
- Android Json生成及解析实例
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
- JS中生成与解析JSON
js中生成json对象 js中解析json字符串: 1.eval("..."): var a_id=eval('{"name":123}'); 如果eval中的 ...
- GeoJson的生成与解析,JSON解析,Java读写geojson,geotools读取shp文件,Geotools中Geometry对象与GeoJson的相互转换
GeoJson的生成与解析 一.wkt格式的geometry转成json格式 二.json格式转wkt格式 三.json格式的数据进行解析 四.Java读写geojson 五.geotools读取sh ...
- 18生成和解析JSON
18生成和解析JSON 1.什么是JSON?JSON的作用?如何编写JSON? JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ...
- Unity编译器 《策划表编表工具》 Excel转Json自动生成解析c#代码
Unity编译器 <策划表编表工具> Excel转Json自动生成解析c#代码 1.表格数据结构解释 2.Excel文件路径 3.C#代码与Json自动生成路径 点击下载依赖Dll程序集 ...
- 解析json自动生成表格
代码业务说明: 将一个含有学生信息的josn字符串中信息解析出来,并将里面的内容添加到表格中. 假设:从java程序后端传递进来一个如下json字符串 "{"total" ...
- JS中生成和解析JSON
1.JS中生成JSON对象的方法: var json = []; var row1 = {}; row1.id= "1"; row1.name = "jyy"; ...
最新文章
- Ubuntu18.04中pyhton默认版本从2.7换为3.x
- 【iOS与EV3混合机器人编程一系列五个】iOS_WiFi_EV3_Library 解剖连接EV3
- python3精要(49)-生成器
- MySQL 删除大表的性能问题
- python3.5怎么打开一个文件,Python3.5入门学习记录-File
- 音乐播放器 EasyMusic (一)
- pytroch中的Variable()介绍
- 图像效果的一些专业测试工具和指标:
- java applet类开始博饼_博饼小游戏java源代码.doc
- 公开下载 |《2021技术人的百宝黑皮书》来了!
- 波士顿学院的计算机科学,权威公布:美国最强商学院,TOP5里有你的梦校吗?...
- 计算机类部分核心期刊说明
- 基于长短期记忆网络(LSTM)的意见领袖对舆论风向的研究、网络暴力研究、LSTM情感分分类、意见领袖的影响力、神经网络实战、数据分析实战、蔡徐坤潘长江网络暴力事件、数据可视化实战、舆情研究
- 拥抱变化的 2015
- 什么缩写是mzj_mzjh是什么意思,mzjh缩写代表什么意思,mzjh是什么含义
- 龟叔 python_Python 三十而立
- 空间点过程与随机测度(二):测度的故事
- Python+Selenium多线程基础微博爬虫
- 风影墙纸,一天看N回。
- 分享!手机浏览器跳转微信一键添加微信好友的方案