網(wǎng)站建設(shè)報(bào)價(jià) 福州seo外包品牌
JSON(JavaScript Object Notation)一種靈活、高效、輕量級(jí)的數(shù)據(jù)交換格式,廣泛應(yīng)用于各種數(shù)據(jù)交換和存儲(chǔ)場(chǎng)景。
基本特點(diǎn)
1、簡(jiǎn)單易用:JSON格式非常簡(jiǎn)單,易于理解和使用。
2、輕量級(jí):相比XML等其他數(shù)據(jù)格式,JSON占用的空間更小,傳輸效率更高。
3、跨平臺(tái):JSON是一種純文本格式,可以輕松地在不同的系統(tǒng)和編程語(yǔ)言之間交換數(shù)據(jù)。
4、可讀性強(qiáng):JSON格式的數(shù)據(jù)結(jié)構(gòu)清晰,易于閱讀和調(diào)試。
數(shù)據(jù)結(jié)構(gòu)
JSON支持兩種數(shù)據(jù)結(jié)構(gòu)
1、對(duì)象(Object):無(wú)序的鍵值對(duì)集合,用大括號(hào) {}
包圍。鍵必須是字符串,值可以是任意有效的JSON數(shù)據(jù)類(lèi)型。
{"name": "John","age": 30,"isStudent": false,"hobbies": ["reading", "coding", "traveling"]
}
2、數(shù)組(Array):有序的值集合,用方括號(hào) []
包圍。數(shù)組中的值可以是任意有效的JSON數(shù)據(jù)類(lèi)型。
["apple","banana",42,true,{"name": "Alice","age": 25}
]
在Java中使用 org.json.JSONObject
類(lèi)來(lái)解析和生成JSON數(shù)據(jù)。
import org.json.JSONObject;// 解析JSON
String jsonString = "{\"name\": \"John\", \"age\": 30}";
JSONObject jsonObject = new JSONObject(jsonString);
System.out.println(jsonObject.getString("name")); // 輸出: John// 生成JSON
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "John");
jsonObject.put("age", 30);
String jsonString = jsonObject.toString();
System.out.println(jsonString); // 輸出: {"name":"John","age":30}
轉(zhuǎn)換
fastjson
是阿里巴巴開(kāi)源的一個(gè)高性能的JSON庫(kù)
導(dǎo)入項(xiàng)目
1、對(duì)象或集合(內(nèi)套集合也可以)轉(zhuǎn)JSON對(duì)象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class User {private String name;private int age;// getter 和 setter 方法
}public class JsonExample {public static void main(String[] args) {User user = new User();user.setName("John");user.setAge(30);// 對(duì)象轉(zhuǎn)JSON字符串String jsonString = JSON.toJSONString(user);System.out.println(jsonString); // 輸出: {"name":"John","age":30}// 對(duì)象轉(zhuǎn)JSONObjectJSONObject json = new JSONObject();json.putAll(JSON.parseObject(jsonString));System.out.println(json.toJSONString()); // 輸出: {"name":"John","age":30}}
}
2、JSON格式字符串與JSON對(duì)象之間的轉(zhuǎn)換
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class JsonExample {public static void main(String[] args) {String j = "{\"goodslist\":[{\"goods_id\":1}],\"name\":\"張三\"}";// JSON字符串轉(zhuǎn)JSONObjectJSONObject jsonObject = JSON.parseObject(j);System.out.println(jsonObject.toJSONString()); // 輸出: {"goodslist":[{"goods_id":1}],"name":"張三"}// 或者JSONObject jsonObject2 = JSONObject.parseObject(j);System.out.println(jsonObject2.toJSONString()); // 輸出: {"goodslist":[{"goods_id":1}],"name":"張三"}}
}
3、JSON字符串-數(shù)組類(lèi)型與JSONArray之間的轉(zhuǎn)換
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;public class JsonExample {public static void main(String[] args) {String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";// JSON字符串轉(zhuǎn)JSONArrayJSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);System.out.println(jsonArray.toJSONString()); // 輸出: [{"studentName":"lily","studentAge":12},{"studentName":"lucy","studentAge":15}]}
}
4、復(fù)雜JSON格式字符串與JSONObject之間的轉(zhuǎn)換
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;public class JsonExample {public static void main(String[] args) {String j = "{\"goodslist\":[{\"goods_id\":1}],\"name\":\"張三\"}";// 復(fù)雜JSON字符串轉(zhuǎn)JSONObjectJSONObject jsonObject = JSON.parseObject(j);System.out.println(jsonObject.toJSONString()); // 輸出: {"goodslist":[{"goods_id":1}],"name":"張三"}}
}
5、JSON字符串轉(zhuǎn)JAVA對(duì)象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;public class User {private String name;private int age;// getter 和 setter 方法
}public class JsonExample {public static void main(String[] args) {String j = "{\"name\":\"張三\",\"age\":30}";// JSON字符串轉(zhuǎn)User對(duì)象User user = JSON.parseObject(j, new TypeReference<User>() {});System.out.println(user.getName()); // 輸出: 張三System.out.println(user.getAge()); // 輸出: 30}
}
6、JSON字符串集合轉(zhuǎn)LIST對(duì)象
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;public class Goods {private int goods_id;// getter 和 setter 方法
}public class JsonExample {public static void main(String[] args) {String str = "[{\"goods_id\":1},{\"goods_id\":2}]";// JSON字符串集合轉(zhuǎn)List<Goods>對(duì)象List<Goods> goodslist = JSON.parseObject(str, new TypeReference<ArrayList<Goods>>() {});for (Goods goods : goodslist) {System.out.println(goods.getGoods_id());}// 輸出: 1// 輸出: 2}
}
- JSON字符串轉(zhuǎn)JSON對(duì)象:使用
JSON.parseObject()
或JSONObject.parseObject()
。 - JSON對(duì)象轉(zhuǎn)JSON字符串:使用
JSON.toJSONString()
或jsonObject.toJSONString()
。 - JSON字符串轉(zhuǎn)JSONArray:使用
JSON.parseArray()
。 - JSON字符串轉(zhuǎn)Java對(duì)象:使用
JSON.parseObject()
并指定目標(biāo)類(lèi)或TypeReference
。 - JSON字符串集合轉(zhuǎn)List對(duì)象:使用
JSON.parseObject()
并指定TypeReference
。