JSON学习笔记
一 json入门
json引入
json注意事项:
1.json不区分整数、小数等类型,都是用Number来存储数字
2.Array表示数组,用中括号[ ]来括起来,用逗号,分隔,元素可以为任意类型
3.Object表示对象以花括号{ }括起来,以键值对的方式存储,key必须为string类型,value可以为任意类型,元素之间也可以用逗号,分隔
json依赖注入
在pom.xml中添加依赖
<!-- JSONObject需要6个maven依赖 -->
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.7.0</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>net.sf.ezmorph</groupId>
<artifactId>ezmorph</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>
<!--加入对commons-io的依赖-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<!--阿里巴巴json依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
构建json的三种方法
1.直接构建
JSONObject obj = new JSONObject();
obj.put("name","洋洋");
obj.put("age",22);
obj.put("is_student",ture);
obj.put("hobbies",new String[] {"swimming","hiking"});
//调用toString方法,可以直接将其内容打印出来
System.out.println(obj.toString());
直接实例化一个JSONObject对象,而后调用put()方法,将数据写入,第一个参数key必须为string类型,第二个参数value可以为任意类型
2.通过HashMap构建
Map<String, Object> data = new HashMap<String, Object>();
data.put("name", "John");
data.put("age", 22);
data.put("is_student", true);
data.put("hobbies", new String[] {"hiking", "swimming"});
JSONObject obj = new JSONObject(data);
System.out.println(obj.toString());
使用HashMap创建json,实际上即先创建一个HashMap对象并把数据打包进去,然后创建一个JSONObject对象,并在创建时把HashMap对象作为一个参数传进去;
注意:
引包一定要引对!!!
import org.json.JSONObject;
3.使用JavaBean构建(开发常用)
JavaBean:
public class PersonInfo {
private String name;
private String sex;
private int age;
private boolean isStudent;
private String[] hobbies;
//以下省略set和get方法
}
main:
PersonInfo info = new PersonInfo();
info.setName("洋洋");
info.setAge(22);
info.setStudent(true);
info.setHobbies(new String[] {"swimming","hiking"});
JSONObject obj = new JSONObject(info);
System.out.println(obj);
注意:
1.Javabean中要有get方法,不然无法访问存储的数据;
2.Javabean构建json的方法实际就是把一个bean对象以参数的形式传进正在创建的JSONObject
JsonConfig的使用
JsonConfig作用:对已有属性的排除过滤
搭配jsonconfig.setExcludes( new String[]{“password”});使用;
JsonConfig config = new JsonConfig();
config.setExcludes( new String[]{"password"});
User user = new User(12, "梁川川", "json",new Date(System.currentTimeMillis()));
System.out.println(JSONObject.fromObject(user, config).toString());
解析json
解析json主要的基本类型如:Number,boolean与数组Array;
基本类型的解析直接调用JSONObject对象的getXXX(key)方法,
例如字符串:getString(key),例如布尔值:getBoolean(key)
数组解析麻烦些:需要通过JSONObject对象的getJSONArray(key)方法获取到一个JSONArray对象,再调用JSONArray对象的get(i)方法获取数组,i为索引值.
PersonInfo personInfo = new PersonInfo("洋洋",22,true,new String[] {"hiking","swimming"});
JSONObject obj = new JSONObject(personInfo);
System.out.println("name:" obj.getString("name"));
System.out.println("age:" obj.getInt("age"));
System.out.println("isStudent:" obj.getBoolean("isStudent"));
JSONArray hobbies = obj.getJSONArray("hobbies");
for (int i=0;i<hobbies.length();i ){
String s = (String) hobbies.get(i);
System.out.println(s);
}
Gson的使用
gson是Google提供的用来在Java对象和json数据之间相互映射的java类库,可以将java转换成json字符也可以将一个json字符转换成java对象;
在pom.xml中添加Gson依赖
<!--加入Gson的依赖-->
<dependency>
<groupId>com.谷歌.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
补充各种JSON转换
JSON字符串转JSONObject
//方法一:
String str = "{\"id_no\":\"342422198012001122\",\"mobile_no\":\"13666667789\",\"name\":\"徐丽\"}";
JSONObject obj = new JSONObject(str); //在这里转换。
//方法二:
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
//方法三:
JSONObject jsonObject = JSONObject.fromObject(str);
JSONObject转JSON字符串
//方法一:
String str = JSONObject.toJSONString(jsonObject);
//方法二:
String str = jsonObject.toString();
JSONObject转JSONArray
//方法一:
JSONArray jsonArray= jsonObject.getJSONArray("Result");
//方法二:
//创建一个空JSONArray
JSONArray jsonArray = new JSONArray();
//把Details从原来对象中取出,并存入创建好的空JSONArray,使其转型
jsonArray.put(cardNumJson.get("Details"));
JSON字符串转JSONArray
JSONArray jsonArray= JSONArray.parseArray(String);
JSONArray转JSON字符串
String string = jsonArray.toString();
JSONArray转List对象
List<User> users = JSONObject.parseArray(jsonArray.toJSONString(),User.class);
JSONObject转java对象
User user2 = JSONObject.toJavaObject(jsonObject,User.class);
JSON字符串转对象
User user = JSONObject.parseObject(string,User.class);
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgickhg
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13