一 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);