当前位置:网站首页>fastjson的JSONArray和JSONObject[通俗易懂]
fastjson的JSONArray和JSONObject[通俗易懂]
2022-06-26 11:52:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
什么是JSON?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于javascript Programming Language, Standard ECMA-262 3rd Edition – December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。 现在我们就来研究一下fastJson。
Fastjson是国内著名的电子商务互联网公司阿里巴巴内部开发的用于java后台处理json格式数据的一个工具包,包括“序列化”和“反序列化”两部分,它具备如下特征
1. 速度最快,测试表明,fastjson具有极快的性能,超越任其他的java json parser。包括自称最快的jackson。
2. 功能强大,完全支持java bean、集合、Map、日期、Enum,支持范型,支持自省。
3. 无依赖,能够直接运行在Java SE 5.0以上版本
4. 支持Android。
5. 这是fastJson的网址:http://code.alibabatech.com/wiki/display/FastJSON/Overview其中包含了json数据处理的教程,jar下载地址,example样例等
JSONObject 与JSONArray
- JSONObject
json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value}
- JSONArray
json数组,使用中括号[ ],只不过数组里面的项也是json键值对格式的
Json对象中是添加的键值对,JSONArray中添加的是Json对象
例子
/** * Created by wanggs on 2017/7/27. */
public class JsonTest {
public static void main(String[] args) {
// Json对象中是添加的键值对,JSONArray中添加的是Json对象
JSONObject jsonObject = new JSONObject();
JSONObject jsonObject1 = new JSONObject();
JSONArray jsonArray = new JSONArray();
jsonObject1.put("001","tom");
// JSONObject 对象中添加键值对
jsonObject.put("key","value");
// 将JSONObject对象添加到json数组中
jsonArray.add(jsonObject);
jsonArray.add(jsonObject1);
System.out.println(jsonArray.toString());
// 输出结果: [{"key":"value"},{"001":"tom"}]
}
}先来个官方例子
package com.wanggs.com.wanggs.json.fastjson;
import java.util.List;
/** * Created by wanggs on 2017/7/27. */
public class Group {
private int id;
private String name;
List<User> users;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}
class User{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}package com.wanggs.com.wanggs.json.fastjson;
import com.alibaba.fastjson.JSON;
import java.util.ArrayList;
import java.util.List;
/** * Created by wanggs on 2017/7/27. */
public class FastJsonTest {
public static void main(String[] args) {
Group group = new Group();
group.setId(0);
group.setName("admin");
User user = new User();
user.setId(001);
user.setName("guest");
User user1 = new User();
user1.setId(002);
user1.setName("root");
List<User> users = new ArrayList<User>();
users.add(user);
users.add(user1);
group.setUsers(users);
String json = JSON.toJSONString(group);
System.out.println(json);
// 输出: {
"id":0,"name":"admin","users":[{
"id":1,"name":"guest"},{
"id":2,"name":"root"}]}
}
}下面给出fastJson处理json数据格式的代码样例:
package test.com.wanggs.com.wanggs.json.fastjson;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.wanggs.com.wanggs.json.fastjson.People;
import org.junit.Test;
import static org.junit.Assert.*;
/** * Created by wanggs on 2017/7/27. */
public class FastJsonTestTest {
/** * 序列化 */
@Test
public void toJsonString() {
People people = new People("001","tom",12);
String text = JSON.toJSONString(people);
System.out.println(text);
// 输出结果: {"age":12,"id":"001","name":"tom"}
}
/** * 反序列为Json对象 */
@Test
public void parseJsonObject(){
String text = "{\"age\":12,\"id\":\"001\",\"name\":\"tom\"}";
People people = (People) JSON.parseObject(text,People.class);
System.out.println("parseBeanObject()方法:people==" + people.getId() + "," + people.getName() + "," + people.getAge());
// 输出结果为: parseBeanObject()方法:people==001,tom,12
}
/** * 将javaBean转化为json对象 */
@Test
public void bean2Json(){
People people = new People("002","jack",23);
JSONObject jsonObject = (JSONObject) JSON.toJSON(people);
System.out.println("bean2Json()方法:jsonObject==" + jsonObject);
// 输出结果: bean2Json()方法:jsonObject=={"name":"jack","id":"002","age":23}
}
/** * 全序列化 直接把java bean序列化为json文本之后,能够按照原来的类型反序列化回来。支持全序列化,需要打开SerializerFeature.WriteClassName特性 */
@Test
public void parseJSONAndBeanEachother(){
People people = new People("002","jack",23);
SerializerFeature[] featureArr = { SerializerFeature.WriteClassName };
String text = JSON.toJSONString(people, featureArr);
System.out.println("parseJSONAndBeanEachother()方法:text==" + text);
// 输出结果:parseJSONAndBeanEachother()方法:text=={"@type":"com.wanggs.com.wanggs.json.fastjson.People","age":23,"id":"002","name":"jack"}
People people1 = (People) JSON.parse(text);
System.out.println("parseJSONAndBeanEachother()方法:People==" + people1.getId() + "," + people1.getName() + "," + people1.getAge());
// 输出结果:userObj==testFastJson001,maks,105
}
}附:javaBean类People.java
package com.wanggs.com.wanggs.json.fastjson;
/** * Created by wanggs on 2017/7/27. */
public class People {
private String id;
private String name;
private int age;
public People() {
}
public People(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}在深入Json
package test.com.wanggs.com.wanggs.json.fastjson;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.wanggs.com.wanggs.json.fastjson.Address;
import com.wanggs.com.wanggs.json.fastjson.People;
import org.junit.Test;
import java.util.*;
import static org.junit.Assert.*;
/** * Created by wanggs on 2017/7/27. */
public class FastJsonTest1Test {
/** * 数组转json字符串 */
@Test
public void array2Json() {
String[] arr = {
"bill", "green", "maks", "jim"};
String jsonText = JSON.toJSONString(arr);
System.out.println("array2Json()方法:jsonText==" + jsonText);
// 输出结果:jsonText==["bill","green","maks","jim"]
}
/** * json格式字符串转数组 */
@Test
public void json2Array() {
String jsonText = "[\"bill\",\"green\",\"maks\",\"jim\"]";
JSONArray jsonArray = JSON.parseArray(jsonText);
System.out.println("json2Array()方法:jsonArray==" + jsonArray);
// 输出结果:jsonArray==["bill","green","maks","jim"]
}
/** * 数组转json格式字符串 */
@Test
public void array2Json2() {
People people = new People("001", "tom", 12);
People people1 = new People("002", "jack", 23);
People people2 = new People("003", "mair", 22);
People[] peoples = new People[]{people, people1, people2};
String jsonText = JSON.toJSONString(peoples);
System.out.println("array2Json2()方法:jsonText==" + jsonText);
//输出结果:array2Json2()方法:jsonText==[{
"age":12,"id":"001","name":"tom"},{
"age":23,"id":"002","name":"jack"},{
"age":22,"id":"003","name":"mair"}]
}
/** * json格式字符串转数组 */
@Test
public void json2Array2() {
String jsonText = "[{\"age\":12,\"id\":\"001\",\"name\":\"tom\"},{\"age\":23,\"id\":\"002\",\"name\":\"jack\"},{\"age\":22,\"id\":\"003\",\"name\":\"mair\"}]";
JSONArray jsonArr = JSON.parseArray(jsonText);
System.out.println("json2Array2()方法:jsonArr==" + jsonArr);
// 输出结果:json2Array2()方法:jsonArr==[{
"name":"tom","id":"001","age":12},{
"name":"jack","id":"002","age":23},{
"name":"mair","id":"003","age":22}]
}
/** * list集合转json格式字符串 */
@Test
public void list2Json() {
List<People> list = new ArrayList<People>();
list.add(new People("001", "tom", 12));
list.add(new People("002", "jack", 23));
list.add(new People("003", "mair", 22));
String jsonText = JSON.toJSONString(list);
System.out.println("list2Json()方法:jsonText==" + jsonText);
// 输出的结果为: [{
"age":12,"id":"001","name":"tom"},{
"age":23,"id":"002","name":"jack"},{
"age":22,"id":"003","name":"mair"}]
}
/** * map转json格式字符串 */
@Test
public void map2Json() {
Map map = new HashMap();
Address address1 = new Address("广东省","深圳市","科苑南路","580053");
map.put("address1", address1);
Address address2 = new Address("江西省","南昌市","阳明路","330004");
map.put("address2", address2);
Address address3 = new Address("陕西省","西安市","长安南路","710114");
map.put("address3", address3);
String jsonText = JSON.toJSONString(map, true);
System.out.println("map2Json()方法:jsonText=="+jsonText);
//输出结果:jsonText=={
"address1":{
"city":"深圳市","post":"580053","province":"广东省","street":"科苑南路"},"address2":{
"city":"南昌市","post":"330004","province":"江西省","street":"阳明路"},"address3":{
"city":"西安市","post":"710114","province":"陕西省","street":"长安南路"}}
}
/** * json转map */
@Test
public void json2Map(){
String text = "{\"age\":12,\"id\":\"001\",\"name\":\"tom\"}";
Map<String,Object> map = JSON.parseObject(text);
System.out.println("json2Map()方法:map=="+map);
//输出结果:{
"name":"tom","id":"001","age":12}
Set<String> set = map.keySet();
for(String key : set){
System.out.println(key+"--->"+map.get(key));
}
}
}技巧
package com.wanggs.com.wanggs.json.fastjson;
import com.alibaba.fastjson.JSON;
/** * Created by wanggs on 2017/7/27. */
public class CustomText {
/** * touser : OPENID * msgtype : text * text : {"content":"Hello World"} */
//{"msgtype":"text","text":{"content":"Hello World"},"touser":"OPENID"}
private String touser;
private String msgtype;
private TextBean text;
public static class TextBean {
/** * content : Hello World */
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
public String getTouser() {
return touser;
}
public void setTouser(String touser) {
this.touser = touser;
}
public String getMsgtype() {
return msgtype;
}
public void setMsgtype(String msgtype) {
this.msgtype = msgtype;
}
public TextBean getText() {
return text;
}
public void setText(TextBean text) {
this.text = text;
}
}
class Test{
public static void main(String[] args) {
CustomText customText = new CustomText();
customText.setTouser("OPENID");
customText.setMsgtype("text");
CustomText.TextBean textBean = new CustomText.TextBean();
textBean.setContent("Hello World");
customText.setText(textBean);
String json = JSON.toJSONString(customText);
System.out.println(json);
//{"msgtype":"text","text":{"content":"Hello World"},"touser":"OPENID"}
}
/** * { "touser":"OPENID", "msgtype":"text", "text": { "content":"Hello World" } } */
}归纳六种方式json转map
package com.wanggs.com.wanggs.json.fastjson;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;
import java.util.Set;
/** * Created by wanggs on 2017/7/27. */
public class FastJsonTest1 {
public static void main(String[] args) {
String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}";
//第一种方式
Map maps = (Map)JSON.parse(str);
System.out.println("这个是用JSON类来解析JSON字符串!!!");
for (Object map : maps.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" " + ((Map.Entry)map).getValue());
}
//第二种方式
Map mapTypes = JSON.parseObject(str);
System.out.println("这个是用JSON类的parseObject来解析JSON字符串!!!");
for (Object obj : mapTypes.keySet()){
System.out.println("key为:"+obj+"值为:"+mapTypes.get(obj));
}
//第三种方式
Map mapType = JSON.parseObject(str,Map.class);
System.out.println("这个是用JSON类,指定解析类型,来解析JSON字符串!!!");
for (Object obj : mapType.keySet()){
System.out.println("key为:"+obj+"值为:"+mapType.get(obj));
}
//第四种方式
/** * JSONObject是Map接口的一个实现类 */
Map json = (Map) JSONObject.parse(str);
System.out.println("这个是用JSONObject类的parse方法来解析JSON字符串!!!");
for (Object map : json.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
}
//第五种方式
/** * JSONObject是Map接口的一个实现类 */
JSONObject jsonObject = JSONObject.parseObject(str);
System.out.println("这个是用JSONObject的parseObject方法来解析JSON字符串!!!");
for (Object map : json.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
}
//第六种方式
/** * JSONObject是Map接口的一个实现类 */
Map mapObj = JSONObject.parseObject(str,Map.class);
System.out.println("这个是用JSONObject的parseObject方法并执行返回类型来解析JSON字符串!!!");
for (Object map: json.entrySet()){
System.out.println(((Map.Entry)map).getKey()+" "+((Map.Entry)map).getValue());
}
String strArr = "{
{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}," +
"{\"00\":\"zhangsan\",\"11\":\"lisi\",\"22\":\"wangwu\",\"33\":\"maliu\"}}";
// JSONArray.parse()
System.out.println(json);
}
}package com.wanggs.com.wanggs.json.fastjson;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
/** * Created by wanggs on 2017/7/27. */
public class FastJsonTest {
public static void main(String[] args) {
String json = "[{\"id\":1,\"type\":\"cycle\",\"attribute\":{\"center\":\"(10.4, 123.345)\", \"radius\":67.4}},{\"id\":2,\"type\":\"polygon\",\"attribute\":[{\"vertex\":\"(10.4, 133.345)\"}, {\"vertex\":\"(10.4, 143.345)\"}]}]";
JSONArray array = JSON.parseArray(json);
System.out.println(array.getJSONObject(0).getJSONObject("attribute").get("center"));
System.out.println(array.getJSONObject(1).getJSONArray("attribute").getJSONObject(1).get("vertex"));
// 输出结果为: (10.4, 123.345) (10.4, 143.345)
}
}方法总结
java和js中JSONObject,JSONArray,Map,String之间转换——持续更新中
4.JSONObject、JSONArray,Map转String JSONObject——String: System.out.println(myJsonObject);//可直接输出JSONObject的内容 myJsonObject.toString(); JSONArray——String: System.out.println(myJsonArray);//可直接输出myJsonArray的内容 myJsonArray.toString(); Map——String: System.out.println(map);//可直接输出map的内容 map.toString(); 5.JSONObject转JSONArray
JSONObject myJson = JSONObject.fromObject(jsonString);
Map m = myJson;
7.JSONArray转JSONObject for(int i=0 ; i < myJsonArray.length() ;i++) { //获取每一个JsonObject对象 JSONObject myjObject = myJsonArray.getJSONObject(i);
}
8.JSONArray转Map 9.Map转JSONObject JSONObject json = JSONObject.fromObject( map ); 10.Map转JSONArray JSONArray.fromObject(map); 11.List转JSONArray JSONArray jsonArray2 = JSONArray.fromObject( list );
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133978.html原文链接:https://javaforall.cn
边栏推荐
- redux相关用法
- Omni channel member link - tmall member link 3: preparation of member operation content
- Statistical genetics: Chapter 2, the concept of statistical analysis
- PC qq Hall upload Update Modifying versioninfo
- Laravel admin hidden button, and set button display, default sequence, form form form non modifiable value
- Five trends of member management in 2022
- Dynamic programming to solve stock problems (Part 2)
- 汇编语言(7)运算指令
- Quantitative elementary -- akshare obtains stock code, the simplest strategy
- Cross platform members get through the two channels of brand Ren Du
猜你喜欢

Jmeter响应时间和tps监听器使用教程
![In depth understanding of STM32 serial port experiment (register) [nanny level tutorial]](/img/b2/f09e220918a85b14a1993aa85f7720.png)
In depth understanding of STM32 serial port experiment (register) [nanny level tutorial]

Ctrip ticket app KMM cross end kV repository mmkv kotlin | open source

Pratique de l'attaque et de la défense du réseau HUST | 6 Expérience de sécurité du microprogramme de l'équipement IOT | expérience 2 technologie d'atténuation des attaques de l'équipement IOT basée s

PC QQ大廳 上傳更新 修改versionInfo

Prospering customs through science and technology, Ronglian and Tianjin Customs jointly build a genomic database and analysis platform

TCP面试
女性科学家的流失

机器学习LDA——实验报告

18: Chapter 3: development of pass service: 1: SMS login & registration process, introduction; (SMS verification code is used here)
随机推荐
NFS共享存储服务安装
10 years' experience in programmer career - for you who are confused
leetcode 715. Range 模块 (hard)
Re recognized! Know that Chuangyu has been selected as one of the first member units of the "business security promotion plan"
房租是由什么决定的
我想知道,十大劵商如何开户?在线开户安全么?
Is it safe to open an account in the top ten securities app rankings in China
机器学习PCA——实验报告
女性科学家的流失
Mqtt disconnect and reconnect
How can we reach members more effectively?
Ctfshow web getting started command execution web75-77
C language -- operators and expressions
Five trends of member marketing of consumer goods enterprises in the future
Member system + enterprise wechat + applet to help the efficient transformation of private domain
我想知道同花顺是炒股的么?在线开户安全么?
HUST network attack and defense practice | 6_ IOT device firmware security experiment | Experiment 3 freertos-mpu protection bypass
Refined operation, extending the full life cycle value LTV
Cet article présente la moyenne mobile quadratique linéaire et le fonctionnement simple d'Excel pour réaliser la prédiction des séries chronologiques dans la modélisation.
loggie 编码以及换行符测试