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.google.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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值