json in java
来源:互联网 发布:爱知 编辑:程序博客网 时间:2024/06/11 12:13
一. 概述
- JSON: JavaScript Object Notation,即JavaScript 对象表示法;
- JSON 是轻量级的文本数据交换格式,类似 XML, 比 XML 更小、更快,更易解析。
- JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台,JSON 解析器和 JSON 库支持许多不同的编程语言。
官网:http://json.org/json-zh.html
二. 格式
{ "name": "张三", "age": 20, "skills": [ "java", "python", "javascript" ], "friends": [ { "name": "小红", "age": 20 }, { "name": "小绿", "age": 21 } ], "has_girlfriend": false, "job": null}
JSON 语法是 JavaScript 对象表示法语法的子集。
JSON 值可以是:
- 数字(整数或浮点数),统一为数据类型number
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在中括号中)
- 对象(在大括号中)
- null
三. JSONObject对象
1. 使用org.json中的JSONObject对象构建json数据
1)首先,在maven的pom.xml中添加org.json包的依赖:
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20090211</version></dependency>
2)构建json数据
public static void JSONObjectDemo() throws JSONException { Object mynull = null; JSONObject zhangsan = new JSONObject(); zhangsan.put("name", "张三"); zhangsan.put("age",20); zhangsan.put("skills",new String[]{"java","python","javascript"}); JSONObject xiaohong = new JSONObject(); xiaohong.put("name", "小红"); xiaohong.put("age", 20); JSONObject xiaolv = new JSONObject(); xiaolv.put("name", "小绿"); xiaolv.put("age", 21); zhangsan.put("friends", new Object[]{xiaohong,xiaolv}); zhangsan.put("has_girlfriend",false); zhangsan.put("job",mynull); System.out.println(zhangsan.toString()); }
2. 使用HashMap构建json数据
方法类似上面:
public static void CreateJsonByMap() { Map<String,Object> zhangsan = new HashMap<String,Object>(); Object mynull = null; zhangsan.put("name", "张三"); .... System.out.println(new JSONObject(zhangsan).toString()); }
3. 使用java bean构建json数据
首先要有一个javabean的类,比如已经创建好了Person类
public static void CreateJsonByBean() { Person zhangsan = new Person(); zhangsan.setName("张三"); .... System.out.println(new JSONObject(zhangsan).toString()); }
4. 从文件读取json数据
public static void ParserFromFile() throws IOException, JSONException { BufferedReader br = new BufferedReader(new FileReader("F://zhangsan.json")); StringBuffer sb = new StringBuffer(); String temp = null; while((temp = br.readLine())!=null){ sb.append(temp); } JSONObject jo = new JSONObject(sb.toString()); if(!jo.isNull("name")){ //增强健壮性 System.out.println("姓名:"+jo.getString("name")); } //获取数组 JSONArray major = jo.getJSONArray("skills"); for (int i = 0;i<major.length();i++) { System.out.println("major"+(i+1)+"-"+major.get(i)); } }
四. GSON基本使用
1. 解析与反解析
1)将Javabean的对象转为json字符串:
public static void BeanToJSON(){ User lisi = new User(); lisi.setName("李四"); lisi.setAge(20); lisi.setSkills(new String[]{"唱歌","跳舞"}); lisi.setHas_girlfriend(true); Gson gs = new Gson(); System.out.println(gs.toJson(lisi)); }
2)将json字符串转为Javabean的对象:
public static void JSONToBean() throws IOException{ BufferedReader br = new BufferedReader(new FileReader("F://zhangsan.json")); StringBuffer sb = new StringBuffer(); String temp = null; while((temp = br.readLine())!=null){ sb.append(temp); } Gson gs = new Gson(); User zhangsan = gs.fromJson(sb.toString(), User.class); }
2. 个性化设置json格式:
1)格式化显示:
GsonBuilder gb = new GsonBuilder(); gb.setPrettyPrinting(); Gson gs = gb.create(); System.out.println(gs.toJson(lisi));
2)利用Gson生成新的策略,通过代入回调函数添加额外功能,生成个性化的json
GsonBuilder gb = new GsonBuilder(); gb.setFieldNamingStrategy(new FieldNamingStrategy() { public String translateName(Field f) { if(f.getName().equals("name")) return "NAME"; else return f.getName(); } }); Gson gs = gb.create(); System.out.println(gs.toJson(lisi));
3)字符串转日期类型
json中没有Date类型,所以一般用String类型表示日期,GSON提供了转换功能
GsonBuilder gb = new GsonBuilder(); gb.setDateFormat("yyyy-MM-dd"); //设置日期模板,json中的此格式内容会自动转为Date类型 Gson gs = gb.create(); User zhangsan = gs.fromJson(sb.toString(), User.class); System.out.println(zhangsan.getBirthday().toLocaleString());
阅读全文
0 0
- json in java 介绍
- JSON in Java
- JSON in JAVA
- json in java
- json in java
- Json in Java 的使用
- JSON详细学习之JSONObject in JAVA
- JSON详细学习之JSONObject in JAVA
- JSON详细学习之JSONObject in JAVA
- JSON详细学习之JSONObject in JAVA
- How to parse JSON in Java
- JSON详细学习之JSONObject in JAVA
- JSON详细学习之JSONObject in JAVA
- JSON详细学习之JackSon in JAVA
- JSON详细学习之Gson in JAVA
- JSON详细学习之Gson in JAVA
- Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONException
- parse json into string from http response in java
- 03 网络连接的判断
- Python笔记—Django框架搭建和运行
- 操作表格
- IDEA 2017激活教程
- Retrofit+RxJava+Fresco图片加载框 请求网络数据
- json in java
- Hibernate-缓存
- 路漫漫其修远兮,吾将上下而求索
- luoguP1196 银河英雄传说(并查集)
- Hessian矩阵在求极小值的应用
- Arif in Dhaka (First Love Part 2) UVA
- C++ 引用的简单理解
- Error while Installing APK
- Andrew NG 机器学习 笔记-week11-应用实例:图片文字识别(Application Example:Photo OCR)