首页 技术 正文
技术 2022年11月15日
0 收藏 777 点赞 4,296 浏览 3620 个字

JSON有两种结构

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构

1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象.key 获取属性值,这个属性值的类型可以是数字、字符串、数组、对象几种。

2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [“java”,”javascript”,”vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。

一、使用fastjson

1、到mvn(https://mvnrepository.com库中引入

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>

2、使用fastjson api

public static final Object parse(String text); // 把JSON字符串parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON字符串parse成JSONObject,注意的是,json字符串与json对象是不一样的public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON字符串parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON字符串parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON字符串parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON字符串public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON字符串public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

案例:

测试类

package com.sanyouhome.json;import java.util.List;class Hobby{
private Long itemId;
private String itemName; public Long getItemId() {
return itemId;
} public void setItemId(Long itemId) {
this.itemId = itemId;
} public String getItemName() {
return itemName;
} public void setItemName(String itemName) {
this.itemName = itemName;
}
}
public class Boss {
private Long id;
private String name; private List<Hobby> hobby; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<Hobby> getHobby() {
return hobby;
} public void setHobby(List<Hobby> hobby) {
this.hobby = hobby;
} @Override
public String toString() {
return "Boss{" +
"id=" + id +
", name='" + name + '\'' +
", hobby=" + hobby +
'}';
}
}

测试方法

//定义json字符串
String jsonStr = "{\"id\":\"10\",\"name\":\"chrchr\",\"hobby\":[{\"itemId\":\"20\",\"itemName\":\"篮球\"},{\"itemId\":\"21\",\"itemName\":\"游泳\"}]}";//将json字符串转成json对象,parseObject
JSONObject jsonObject = JSON.parseObject(jsonStr);
//System.out.println(jsonObject.toString());//将json对象转成java对象,toJavaObject,参数1【json对象】,参数2 【javaBean】
Boss boss1 = JSON.toJavaObject(jsonObject, Boss.class);
//System.out.println(boss1.toString());//将json字符串转成java对象,parseObject,参数1【json字符串】,参数2【javaBean】
Boss boss2 = JSON.parseObject(jsonStr, Boss.class);
//System.out.println(boss2.toString());Boss boss3 = new Boss();
boss3.setId(1L);
boss3.setName("chrchr");
Hobby hobby = new Hobby();
hobby.setItemId(30L);
hobby.setItemName("lanqiu");
ArrayList<Hobby> hobbies = new ArrayList<>();
hobbies.add(hobby);
boss3.setHobby(hobbies);//将java对象转成json对象,toJSONString
JSONObject o = (JSONObject) JSON.toJSON(boss3);
//System.out.println(o);//将java对象转成json字符串,toJSONString
String s = JSONObject.toJSONString(boss3);
//System.out.println(s);//将java对象转成json字符串,toJSONString
String s1 = new JSONObject().toJSONString(boss3);//获取json对象中的某值,getString
String name = jsonObject.getString("name");
System.out.println(name);

其中JSONObject是继承了JSON实现了Map<String, Object>,并且都是使用的Map中的方法。可以说JSONObject相当于Map<String, Object>

JSONObject extends JSON implements Map<String, Object>

JSONArray是继承了JSON实现List<Object>,并且都是使用的List中的方法。可以说JSONArray相当于List<Object>

JSONArray extends JSON implements List<Object>

3、使用net.sf.json.JSONObject

//json字符串、java对象、map转成JSONObject对象

JSONObject.fromObject(hashMap)

//json对象转换成java对象,并获取java对象属性 JSONObject.toBean(jsonStu, Student.class); jsonObj.toString()

//json数组字符串、list集合转成JSONArray数组类型对象

JSONArray.fromObject(arrayList)
 
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,487
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,486
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,126
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,287