Java-Json简述
JSON
JSON(JavaScript Object Notation):JS对象简谱,它是一种轻量级的数据交换格式(占内存空间少)。是存储和交换文本信息的语法(注意不是一种编程语言)类似于XML,采用键值对的方式来保存数据。易于人与机器观察和使用数据。
语法格式:
假设要设置一本书,此对象有书名,和简介两个属性。
举栗子:
{
"name":"独孤九剑",
"info":"苦心智,劳筋骨,饿体肤,方可练成"
}
在JSON中,一个对象就由一个大括号表示,并且括号中描述的是对象的属性,通过键值对来描述对象的属性的值。
在“独孤九剑”例子中,name就是键,其对应的值就是独孤九剑,然后键值之间用冒号连接,并且多个键值之间使用逗号来分隔。
注意:键值对的键要用引号来引住,因为通常在Java解析中,如果键不使用引号会报错的,但在JS却不会。
键值对的值可以是JS中任意类型的数据。
数组在JSON中的格式:
可以与对象相互嵌套:[元素1,元素2,....]
举栗子:
以一个人的人际关系举例
人名:张三,年龄:19,朋友圈:李四,王二,麻子,灭绝师太。然后灭绝师太对象里有别人对她的评价:人很话不多。
{
"name":"张三",
"age":19,
"friends":["李四","王二","麻子",{
"name":灭绝师太,
"info":"人狠话不多"
}],
"heihei":{
"name":"大长刀",
"length":"40m"
}
}
(注意嵌套含义)
将对象转化为JSON字符串
先创建Person对象举个栗子:
public class Person { private String id;//人送外号 private String name;//真实名字 private String info;//别人评价 get.... set... toString... }
以Gson为例(google/gson)
public static void main(String[] args) { //1、创建Gson对象 Gson g = new Gson(); //2、转换 Person p = new Person("灭绝师太","尼姑","人狠话不多"); String s = g.toJson(p); System.out.println(s); /*匿名 Person p = new Person("灭绝师太","尼姑","人狠话不多"); String s = new Gson().toJson(p); System.out.println(s); */ }
结果:
{"id":"灭绝师太","name":"尼姑","info":"人狠话不多"}
将JSON字符串转化为对象
对象 = new Gson().fromJson(JSON字符串,对象类型.class);
public static void main(String[] args) { //1、创建Gson对象 Gson g = new Gson(); //2、转换 Person p = g.fromJson("{\"id\":\"灭绝师太\",\"name\":\"尼姑\",\"info\":\"人狠话不多\"}",Person.class); System.out.println(p.getId()); System.out.println(p.getName()); System.out.println(p.getInfo()); /* 也可以以匿名方式,这里就懒得打了 */ }
结果:
灭绝师太
尼姑
人狠话不多
还有数组,比如
public static void main(String[] args) { //1、创建Gson对象 Gson g = new Gson(); //2、转换 {"id":"灭绝师太","name":"尼姑","info":"人狠话不多","friends":["张三","麻子","嘿嘿"]} 加入了朋友圈这一数组 HashMap data = g.fromJson("{\"id\":\"灭绝师太\",\"name\":\"尼姑\",\"info\":\"人狠话不多\",\"friends\":[\"张三\",\"麻子\",\"嘿嘿\"]}",HashMap.class); System.out.println(data.get("friends"));//当你输出data.get("friends").getClass时friends类型是ArrayList 注意!!! List friends = (List)data.get("friends"); System.out.println(friends.get(0)); }
结果:
[张三, 麻子, 嘿嘿]
张三
哦,还有FastJSON(阿里巴巴提供的)
首先是对象转化为JSON:
public static void main(String[] args) { Person p = new Person("灭绝师太","尼姑","人狠话不多"); //1、转换 String json = JSON.toJSONString(p); System.out.println(json); }
结果:
{"id":"灭绝师太","info":"人狠话不多","name":"尼姑"}
然后是JSON转化为对象
public static void main(String[] args) { //1、转换 {"id":"灭绝师太","info":"人狠话不多","name":"尼姑"} Peson p = JSON.parseObject("{\"id\":\"灭绝师太\",\"info\":\"人狠话不多\",\"name\":\"尼姑\"}",Person.class); System.out.println(book.getId()); //{"一二三","二三四","三四五"} 随便举个数组的例子 List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]",String.class); System.out.println(strings.get(1)); }
这里注意,不像GSON,这里数组有单独的方法转化。不过总体来说无论是GSON还是FastJSON他们的方法都很见名知意,很好理解。
作者:PuPile
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个无耻的文档搬运工!

浙公网安备 33010602011771号