后端学习-JavaWeb-JSON

JSON

什么是JSON(如何理解?)

百度:JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率

简单概括:一种轻量级(与xml作比较)的数据交换格式(客户端和服务器之间的业务数据的传递格式)

JSON基础

json由键值对组成,并由大(花)括号包围。每个键由引号引起来,键值之间用冒号分隔,多组键值对之间用逗号进行分割

json本身是一个对象,key就想是对象的属性,用json对象.key的方式对key进行访问。

JSON在Java中的使用

先导入jar包或者导入依赖

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-json</artifactId>
      <version>2.7.4</version>
      <scope>compile</scope>
</dependency>
javaBean和json的互转

这里我们需要导入gson的依赖来帮助我们达到目的

<!--        用于json和javabean互转-->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
      </dependency>

gson,typetoken

// 创建一个Gson对象
Gson gson = new Gson();

// 将Java对象转换为JSON字符串
String jsonString = gson.toJson(javaObject);

// 将JSON字符串转换回Java对象
JavaObject javaObject = gson.fromJson(jsonString, JavaObject.class);
List和json的互转

将List转换为JSON字符串,可以使用Gson的toJson()方法。示例代码如下:

List<JavaBean> javaBeanList = newArrayList<>();
// 添加元素到javaBeanList中...Gsongson=newGson();
StringjsonString= gson.toJson(javaBeanList);

将JSON字符串转换为List对象,需要使用TypeToken,因为在Java中泛型的类型信息在编译时会被擦除,因此需要使用TypeToken来获取类型信息。示例如下:

StringjsonString="[{\"foo\":\"fooValue\",\"bar\":\"barValue\"},{\"foo\":\"fooValue2\",\"bar\":\"barValue2\"}]";
Gsongson=newGson();
TypelistType=newTypeToken<List<JavaBean>>() {}.getType();
List<JavaBean> javaBeanList = gson.fromJson(jsonString, listType);

其中,JavaBean是自定义的Java类名称。注意,fromJson()方法的第二个参数是Type类型,用于指定要转换成的对象类型。如果直接使用List.class,会出现类型擦除导致编译错误。因此,需要使用匿名内部类的方式创建TypeToken对象。

map和json的互转

将Map转换为JSON字符串,可以使用Gson的toJson()方法。示例代码如下:

Map<String, Object> map = newHashMap<>();
// 向map中添加键值对...Gsongson=newGson();
StringjsonString= gson.toJson(map);

将JSON字符串转换为Map对象,可以先将JSON字符串转换为JsonElement对象,再从JsonElement对象中获取Map对象。示例如下:

StringjsonString="{\"foo\":\"fooValue\",\"bar\":{\"baz\":123}}";
Gsongson=newGson();
JsonElementjsonElement= gson.fromJson(jsonString, JsonElement.class);
Map<String, Object> map = gson.fromJson(jsonElement, newTypeToken<Map<String, Object>>() {}.getType());

其中,JsonElement是Gson库中的类,用于表示JSON数据的元素(可以是对象、数组、字符串等)。在上面的示例中,我们先将JSON字符串通过fromJson()方法转换为一个JsonElement对象,然后再从JsonElement对象中获取Map对象。由于要获取的Map对象的键和值的类型可能不确定,因此依然需要使用TypeToken来指定类型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YHanJG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值