JavaWeb之JSON三种情况详解

Json

定义

是轻量级(跟xml比较)的数据交换(客户端和服务器业务数据的传输格式)格式
采用独立于语言的文本格式,很多语言提供了对json的支持

由键值对组成,或括号包围。每个键由引号引起,键和值用冒号分割,多组键值用逗号分隔

是一个Object对象

访问

json是一个对象,key是对象的属性

json的两个常用方法 字符串和对象之间的转化

json有两种存在形式
对象的形式存在,为json对象
字符串的形式存在,为json字符串
客户端服务器数据交换JSON.stringify();把json对象-》json字符串
操作json数据JSON.parse();把json字符串-》json对象

<script type="text/javascript">
			// json的定义
			var jsonObj = {
				"key1":12,
				"key2":"abc",
				"key3":true,
				"key4":[11,"arr",false],
				"key5":{
					"key5_1" : 5511,
					"key5_2" : "key5_2_value"
				},
				"key6":[{
					"key6_1_1":6611,
					"key6_1_2":"key6_1_2_value"
				},{
					"key6_2_1":6621,
					"key6_2_2":"key6_2_2_value"
				}]
			};
			// json的访问
			// json对象转字符串
			var jsonObjString = JSON.stringify(jsonObj);
			alert(jsonObjString);//类似toString

			alert(jsonObj2.key1); // 12
			// json字符串转json对象
			var jsonObj2 = JSON.parse(jsonObjString);

		</script>

java的json

JavaBean和json的互转()

toJson()结果字符串

fromJson()结果对象

@Test
    public void test1(){
        User user = new User(1,"username1","123456","243903449@qq.com");
        Gson gson = new Gson();
        String userJsonString = gson.toJson(user); // toJson()将java对象转化为字符串
        System.out.println(userJsonString);
        User user1 = gson.fromJson(userJsonString, User.class);// 把json字符串转换为java对象
        System.out.println(user1);
    }

List和json的互转

创建类的对象.getType()

 @Test
    public void test2() {
        List<User> userList = new ArrayList<>();
        userList.add(new User(1,"lwt1","12341","111@qq.com"));
        userList.add(new User(2,"lwt2","12342","112@qq.com"));
        Gson gson = new Gson();
        String userListJsonString = gson.toJson(userList); // 把List集合转换为json字符串

        System.out.println(userListJsonString);
        // 注意:需要创建一个类 继承TypeToken<嵌套List<实体类>>
//        List<User> list = gson.fromJson(userListJsonString, new UserListType().getType());
        List<User> list = gson.fromJson(userListJsonString,new TypeToken<List<User>>(){}.getType()); // 法二:不用创建UserListType类
        System.out.println(list);
        System.out.println(list.get(0));
    }

类UserListType继承TypeToken<嵌套List<实体类User>>

public class UserListType extends TypeToken<List<User>> {

}

Map和json相互转换

@Test
    public void test3(){
        Map<Integer,User> userMap = new HashMap<>();
        userMap.put(1,new User(1121,"lwt1","123121","123@qq.com"));
        userMap.put(2,new User(1122,"lwt2","123122","123@qq.com"));
        userMap.put(3,new User(1123,"lwt3","123123","123@qq.com"));
        Gson gson = new Gson();
        String userMapJsonString = gson.toJson(userMap); // Map集合转换为json字符串
        System.out.println(userMapJsonString);
        Map<Integer,User> userMap1 = gson.fromJson(userMapJsonString,new UserMapType().getType());
        System.out.println(userMap1);
        User user = userMap1.get(2);
        System.out.println(user);
    }

法一:创建类继承TypeToke<嵌套Map<?,?>>

public class UserMapType extends TypeToken<Map<Integer,User>> {

}

法二:通过匿名内部类,不用创建过多的类。

Map<Integer,User> userMap1 = gson.fromJson(userMapJsonString,new TypeToken<Map<Integer, User>>(){}.getType());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值