JSON——11/15学习

什么是JSON?

JSON(JavaScript Object Notation【表示法,符号】)是一种轻量级的数据交换格式。易于人的阅读和编写,同时也易于及其解析和生成,JSON使用完全独立于语言的文本格式,而由语言来提供对于JSON的支持

轻量级指的是和xml相比
数据交换指的是客户端和服务器之间业务数据的传递格式。

包括C/C++/C#/java/javaScript/Perl/Python等都提供了对JSON的支持

JSON在JavaScript中的使用

JSON的定义
json多是由键值对组成,而且由大括号包围,每个键由引号引起,键值之间使用冒号进行分隔。

下面是一个json的定义
	var jsonObj={
"key1":12,
"key2":"abc",
"key3":true,
"key4":[11,"arr",false],
"key5":{
	"key5_1":551,
	"key5_2":"key5_2_value"
}
"key6":[{
"key6_1_1":6611,
"key6_1_2":"key6_1_2_value"
},{
"key6_2_1":6621
}]

}

JSON的访问
JSON本质上是一个对象
JSON中的key我们可以理解为是对象中的一个属性
JSON中的key访问就和访问对象的属性一样,json对象名.key

JSON的两个常用方法

JSON的存在有两种形式

  1. 对象的形式,叫json对象
  2. 字符串的形式,叫json字符串

一般在要操作json中数据的时候,需要json对象的格式
在要在客户端和服务器之间进行数据交换的时候使用json字符串。

API:
	JSON.stringify() 把json对象转换为json字符串
	JOSN.parse()  把json字符串转换为json对象

JSON在java中的使用

(需要提供导入json的jar包)–教程中用的是谷歌GSON

javaBean和json的互转

Bean bean = new Bean();
//创建gson对象实例
Gson gson = new Gson();
String beanString = gson.toJson(bean);//得到json字符串
gson.fromJson(beanString,Bean);//从json字符串转化回java对象

List和json的互转

List<Bean> beanList = new ArrayList();
beanList.add(new Bean(1));
beanList.add(new Bean(2));
Gson gson = new Gson();
String beanListJsonString = gson.toJson(beanList);
//从字符串转化为List
//List<Bean> list = gson.fromJson(beanListJsonString,personList.getClass());
//如上的方法有个问题:泛型的加入会导致取出的类型转换异常(List里面的元素不是Bean)
//Ctrl+p查看参数,如果转换是一个集合,需要用type而不是class
List<Person> list =
gson.fromJson(personListJsonString,new BeanListType.getType());

官方提供了一个反射的类TypeToken,帮助我们将json字符串转化为集合

public class BeanListType extends typeToken<ArrayList<Bean>>{
	//内部的getType可以帮助正确的转化为Type并且提供转换为集合的支持
}

map和json的互转

Map<Integer,Bean> beanMap = new HashMap<>();
beanMap.put(1,new Bean(1));
beanMap.put(2,new Bean(2));
Gson gson = new Gson();
//map->json String
String beanMapJsonString = gson.toJson(beanMap));
//json String -> map
Map<Integer,Bean> BeanMap2=
gson.fromJson(personMapJsonString,new BeanMapType().getType());
//或者new TypeToken<HashMap<Integer,Person>>(){}.getType()---匿名内部类写法
public class BeanMapType extends TypeToken<HashMap<Integer,Person>{
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值