JSON简单应用

JSON简单应用

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 获取数据的方法和遍历

  1. json 对象.键名
  2. json 对象[“键名”]
  3. 数组对象[索引]

java对象和json数据的相互转换:

常见的解析器: Jsonlib, Gson, fastjson, jackson

常用总结(fastjson)

  1. java 对象转为 json 字符串,String JSONString=JSON.toJSONString(obj);
  2. 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对象

  1. 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);
      }
  2. JSON字符串转化为JSON对象

    • 使用eval()函数进行转换

      1
      2
      3
      4
      5
      6
      7
      //eval函数方式转换(不推荐)
      function fun(){
      //这个str不是json数据,是一个json的字符串
      var str='{"name":"zhagnsan","age":20}';
      var obj=eval("("+str+")");
      alert(obj.name);
      }
    • 使用JSON.parse()方法进行转换

      1
      2
      3
      4
      5
      6
      //javascript原生写法(浏览器版本不能太低)json串-->json对象
      function fun(){
      var str='{"name":"zhagnsan","age":20}';
      var obj=JSON.parse(str);
      alert(obj.name);
      }
    • 第三方工具(josn.js)json字符串–>json对象

      1
      2
      3
      4
      5
      function fun(){
      var str='{"name":"zhagnsan","age":20}';
      var obj=str.parseJSON();
      alert(obj.name);
      }
    • 使用jQuery进行转换

      1
      2
      //$.parseJSON() 方法
      var jsonObj = $.parseJSON(jsonStr);

JackSon的基本用法

一、依赖

二、注解

  1. @JsonIgnoreProperties和@JsonIgnore:
    用于标记属性,在json与java之间相互转化时,将忽略被此注解标记的属性。@JsonIgnoreProperties是类级别注解,可以忽略多个属性,@JsonIgnore用来标注单个属性。
  2. @JsonFormat
    属性值得格式化

案例

  1. 创建 Jackson 的核心对象 ObjectMapper

    1
    ObjectMapper mapper = new ObjectMapper();
  2. 转换

    • writeValue(参数, obj);
      • 参数:
        • File: 将 obj 对象转换为json字符串, 并保存到指定文件
        • Writer: 将 obj 对象转换为json字符串, 并将json数据填充到字符输出流中
        • OutputStream: 将 obj 对象转换为json字符串, 并将json数据填充到字节输出流中
    • writeValueAsString(obj);
      将对象转为json字符串
      1
      String json = mapper.writeValueAsString(obj);

评论