Java小知识点之JSON字符串

举报
多米诺的古牌 发表于 2022/01/21 18:10:05 2022/01/21
【摘要】 1.简介JSON是JavaScript Object Notation(JavaScript 对象表示法)的简称,他是一种存储和交换文本信息的语法,类似 XML,但是他会 比 XML 更小、更快,更易解析,现在正在大面积使用中。。。JSON语法是以键值对形式进行展示的,外层使用大括号,里面的内容可以是字符串、数值、布尔、数组、对象和null。JSON由于使用的是JavaScript语法,所以...

1.简介

JSON是JavaScript Object Notation(JavaScript 对象表示法)的简称,他是一种存储和交换文本信息的语法,类似 XML,但是他会 比 XML 更小、更快,更易解析,现在正在大面积使用中。。。

JSON语法是以键值对形式进行展示的,外层使用大括号,里面的内容可以是字符串、数值、布尔、数组、对象和null。

JSON由于使用的是JavaScript语法,所以在使用的时候不用进行额外的处理,只要能写js的地方都可以使用。

1.1 JSON的数字类型

JSON 数字可以是整型或者浮点型,eg:

{"num":123}
{"num":123.123}

1.2 JSON的对象类型

JSON 对象是在大括号"{}"中进行书写,可以只有一个键值对,包含多个键值对,其中键需要通过 "" 进行包裹,注意是英文的引号,如果有多个键值对的时候需要透过英文逗号","进行分割,eg:

{"name":"小明"}
{"name":"小明","age":12}

1.3 JSON的数组类型

JSON 数组是在中括号"[]"中进行书写,在数组中可以包含多个对象,eg:

[{"name":"小明"}]
[
    {"name":"小明1","age":13},
    {"name":"小明2","age":14}
]

1.4 JSON的布尔类型

JSON布尔值可以是 true 或者 false:

{"flag":true}

1.5 JSON的null类型

JSON可以设置 null 值:

{"test":null}

2.转换

2.1 将String 类型的json数组转为list的形式

2.1.1 首先将String类型的json数组转换为真正的json数组

通过fastjson包下的JSONArray.parseArray进行转换,可以将字符串类型的json数组转换为json数组的形式。

2.1.2 将json数组转换为list的集合对象

通过fastjson包下的JSONArray中的toJavaList方法,将需要转换的类型传入参数,其中.class是利用反射的原理,最后转换为List<对象>的形式,如果没有相应的对象可以先根据数组的字段创建对应的vo。

注:要确保里面的元素是相同的,比如都有name和age元素,否则会转换失败。

import com.alibaba.fastjson.JSONArray;
String str = "[{\"name\":\"小明\",\"age\":12},{\"name\":\"小明\",\"age\":12}]"
JSONArray array = JSONArray.parseArray(str);
List<需要转换的实体类> content = array.toJavaList(需要转换的实体类.class);
@Data
class Person {
    String name;
    Integer age;
}

结果:

[Person(name=小明, age=12), Person(name=小明, age=12)]

2.2 前端json转换

JSON.stringfy()是将对象、数组转换成字符串;

json.parse()是将字符串转成json对象。

2.3 对象转json字符串

T t = new T();
String json = JSONObject.toJSONString(t);
2.4 list转json字符串
import com.alibaba.fastjson.JSON;
List list = new ArrayList();
String jsonString = JSON.toJSONString(list);

3.分享个有趣的工具

会将json字符串自动转换成对应的实体类,方便快捷,可以很容易的通过json字符串生成对应的实体类,网址就是===》转换网站

基本是在JSON字符串、数组、对象和Java中的字符串、数组、对象之间相互转换,本文中之大体说了几种情况,详细的待后面空闲时间进行整理归纳,希望后面一切顺顺利利~加油~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。