json(javaScript Object Notation) 是一个轻量级的数据交换格式
JSON官网
中文网站
格式: 要么对象,要么数组
熟悉json数据格式
用{}代表对象
用[]代表数组
使用名/值的方式定义,名和值之间用 : 间隔
名称需要使用””引起来
多对定义之间使用 , 间隔了多少个月
字符串的属性值用 “” 引起来
a.用键值对表达数据
b.{键值对,键值对,键值对…} json对象
c.[{}…,[]…] json数组
d.json数据中可以包含 json数据,json数组,数字,字符串,布尔
e.json对象和json数组可以做合理的嵌套
1 2 3 4
| var jsonObj={"name":"张三","age":30,"address":"北京"}; alert(jsonObj.name); alert(jsonObj.age); alert(jsonObj.address);
|
json 对象
{ whitespace }
{ “” : value , “” : value}
{} 也是一个 json 对象
json 数组
必须以 [ 和 ] 开头和结尾
[value,value,…]
[“string”,30,]
JSON 获取数据的方法和遍历
- json 对象.键名
- json 对象[“键名”]
- 数组对象[索引]
java对象和json数据的相互转换:
常见的解析器: Jsonlib, Gson, fastjson, jackson
常用总结(fastjson)
- java 对象转为 json 字符串,String JSONString=JSON.toJSONString(obj);
- json 串转为 java 对象
- JSON.parseArray();
- JSON.parseObject(userJSONString,User.class);
- JSON.parse(mapJsonString);
以下测试方法是对象转json数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| //java 对象转为 json 字符串 @Test public void userToJson(){ String userJSONString=JSON.toJSONString(user); System.out.println("userJsonString="+userJSONString); } @Test public void arrayToJson(){ String arrayJsonString=JSON.toJSONString(arrayUsers); System.out.println("arrayJsonString="+arrayJsonString); } @Test public void ListToJson(){ String listJsonString=JSON.toJSONString(listUsers); System.out.println("listJsonString="+listJsonString); } @Test public void setToJson(){ String setJsonString=JSON.toJSONString(setUsers); System.out.println("setJsonString="+setJsonString); } @Test public void mapToJson(){ String mapJsonString=JSON.toJSONString(mapUsers); System.out.println("mapJsonString="+mapJsonString); }
|
以下测试方法是json数据转对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| @Test public void jsonToArray(){ String arrayJsonString=JSON.toJSONString(arrayUsers); JSONArray jsonArray=JSON.parseArray(arrayJsonString); Object[] users=jsonArray.toArray(); for(Object obj : users) { JSONObject jb=(JSONObject)obj; System.out.print("id="+jb.getIntValue("id")); System.out.print(" userName="+jb.getString("userName")); System.out.print(" userPassword="+jb.getString("userPassword")); System.out.println(" userAddress="+jb.getString("userAddress")); } } @Test public void jsonToList(){ String listJsonString=JSON.toJSONString(listUsers); List<User> users =JSON.parseArray(listJsonString, User.class); for(User user : users) { System.out.print("id="+user.getId()); System.out.print(" userName="+user.getUserName()); System.out.print(" userPassword="+user.getUserPassword()); System.out.println(" userAddress="+user.getUserAddress()); } }
@Test public void jsonToSet(){ String setJsonString=JSON.toJSONString(setUsers); List<User> users =JSON.parseArray(setJsonString, User.class); Set<User> users1=new HashSet<User>(users); for(User user : users) { System.out.print("id="+user.getId()); System.out.print(" userName="+user.getUserName()); System.out.print(" userPassword="+user.getUserPassword()); System.out.println(" userAddress="+user.getUserAddress()); } } @Test public void jsonToMap_1(){ String mapJsonString=JSON.toJSONString(mapUsers); Map<String, User> map = JSON.parseObject(mapJsonString, new TypeReference<Map<String, User>>(){}); for(User user : map.values()) { System.out.print("id="+user.getId()); System.out.print(" userName="+user.getUserName()); System.out.print(" userPassword="+user.getUserPassword()); System.out.println(" userAddress="+user.getUserAddress()); } } @Test public void jsonToMap_2(){ String mapJsonString=JSON.toJSONString(mapUsers); Map<String, JSONObject> map = (Map<String, JSONObject>)JSON.parse(mapJsonString); for(JSONObject jb : map.values()) { System.out.print("id="+jb.getIntValue("id")); System.out.print(" userName="+jb.getString("userName")); System.out.print(" userPassword="+jb.getString("userPassword")); System.out.println(" userAddress="+jb.getString("userAddress")); } } @Test public void jsonToUser(){ String userJSONString=JSON.toJSONString(user); User user=JSON.parseObject(userJSONString,User.class); System.out.print("id="+user.getId()); System.out.print(" userName="+user.getUserName()); System.out.print(" userPassword="+user.getUserPassword()); System.out.println(" userAddress="+user.getUserAddress());
}
|
javascript中的json对象和json字符串相互转换
即,如何用js操作json数据
json 对象: 对象的值可以用 “对象.属性”” 进行访问,即可直接操作属性
json 字符串: 单引号或者双引号引起来
如前端传入后台的应该是一个json格式的字符串,而不是一个json对象
JSON对象转化为JSON字符串
- JSON.stringify()
1 2 3 4 5 6
| //json对象-->json字符串 function fun(){ var obj={"name":"zhangsan","age":20}; var str=JSON.stringify(obj); alert(str); }
|
JSON字符串转化为JSON对象
JackSon的基本用法
一、依赖
二、注解
- @JsonIgnoreProperties和@JsonIgnore:
用于标记属性,在json与java之间相互转化时,将忽略被此注解标记的属性。@JsonIgnoreProperties是类级别注解,可以忽略多个属性,@JsonIgnore用来标注单个属性。
- @JsonFormat
属性值得格式化
案例
创建 Jackson 的核心对象 ObjectMapper
1
| ObjectMapper mapper = new ObjectMapper();
|
转换
- writeValue(参数, obj);
- 参数:
- File: 将 obj 对象转换为json字符串, 并保存到指定文件
- Writer: 将 obj 对象转换为json字符串, 并将json数据填充到字符输出流中
- OutputStream: 将 obj 对象转换为json字符串, 并将json数据填充到字节输出流中
- writeValueAsString(obj);
将对象转为json字符串1
| String json = mapper.writeValueAsString(obj);
|