当前位置: 首页 > web >正文

FastJson中JSONObject用法及常用方法总结

–人无远虑,必有近忧–

1.什么是FastJson、JSONObject?

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

JSONObject是一种数据结构,可以理解为JSON格式的数据结构,即“key-value”结构,其格式为“{“key1”:value1,“key2”,value2…}”;JSONObject添加元素可以使用put和get方法。

2.JSONObject它是干嘛的?

JsonObject 就是常说的 json。是一种重要的数据传输对象。

因为ajax请求不刷新页面,但配合js可以实现局部刷新,因此json常常被用来作为异步请求的返回对象使用。

通过response.getWriter()获取PrintWriter pw,然后pw.print(json)。如果没有设置response.setContentType(“application/json; charset=utf-8”); 则需要自己再js中进行解析。

JSONObject添加元素可以使用put(key,value)方法和调用元素方法get(key),这两种方法大家可以任选一种,另外JsonObject是一种重要的数据传输对象,是实际工作中是必不可少的。

3.JSONObject该如何学习

1.导包
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.1</version>
</dependency>
2.常用方法Api
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.crazyit.app.test.TestStudent;
import org.junit.jupiter.api.Test;import java.util.Map;
import java.util.Set;public class TestJsonObjet {@Testpublic void testJsonObjet(){//新建JSONObject对象JSONObject object1 = new JSONObject();//1.在JSONObject对象中放入键值对object1.put("name", "张三");object1.put("name1", "张三1");object1.put("name2", "张三2");//2.根据key获取valueString name = (String) object1.get("name");System.out.println(name);//3.获取JSONObject中的键值对个数int size = object1.size();System.out.println(size);//4.判断是否为空boolean result = object1.isEmpty();System.out.println(result);//5.是否包含对应的key值,包含返回true,不包含返回falseboolean isContainsKeyResult = object1.containsKey("name");System.out.println(isContainsKeyResult);//6.是否包含对应的value值,包含返回true,不包含返回falseboolean isContainsValueResult = object1.containsValue("王五");System.out.println(isContainsValueResult);//7.JSONObjct对象中的value是一个JSONObject对象,即根据key获取对应的JSONObject对象;JSONObject object2 = new JSONObject();//将jsonobject对象作为value进行设置object2.put("student1", object1);JSONObject student =object2.getJSONObject("student1");System.out.println(student);//8.如果JSONObject对象中的value是一个JSONObject数组,既根据key获取对应的JSONObject数组;JSONObject objectArray = new JSONObject();//创建JSONArray数组JSONArray jsonArray = new JSONArray();//在JSONArray数组设值:jsonArray.add(int index, Object value);jsonArray.add(0, "this is a jsonArray value");jsonArray.add(1, "another jsonArray value");objectArray.put("testArray", jsonArray);//获取JSONObject对象中的JSONArray数组JSONArray jsonArray2 = objectArray.getJSONArray("testArray");System.out.println(jsonArray2);//9.remove.根据key移除JSONObject对象中的某个键值对object1.remove("name");System.out.println(object1);//10.取得JSONObject对象中key的集合Set<String> keySet= object1.keySet();for (String key : keySet) {System.out.print("   "+key);}System.out.println();//11.取得JSONObject对象中的键和值的映射关系Set<Map.Entry<String, Object>> entrySet = object1.entrySet();for (Map.Entry<String, Object> entry : entrySet) {System.out.println(entry);}//12.转换为json字符串String str1 = object1.toJSONString();System.out.println(str1);String str2 =object1.toString();System.out.println(str2);//13.将JSONObject转换成对象JSONObject jsonObject = new JSONObject();jsonObject.put("name","张三");jsonObject.put("age","12");String JSONStr = JSON.toJSONString(jsonObject);TestStudent testStudent = JSON.parseObject(JSONStr, TestStudent.class);System.out.println(testStudent);}
}

TestStudent 实体类

package org.crazyit.app.test;import lombok.Data;@Data
public class TestStudent {private String name;private String age;@Overridepublic String toString() {return "TestStudent{" +"name='" + name + '\'' +", age='" + age + '\'' +'}';}
}

输出结果:

com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit5 TestJsonObjet,testJsonObjet张三
3
false
true
false
{"name":"张三","name2":"张三2","name1":"张三1"}
["this is a jsonArray value","another jsonArray value"]
{"name2":"张三2","name1":"张三1"}name2   name1
name2=张三2
name1=张三1
{"name2":"张三2","name1":"张三1"}
{"name2":"张三2","name1":"张三1"}
TestStudent{name='张三', age='12'}Process finished with exit code 0

4.删除key和获取key的返回值部分对比

删除key不用考虑key是否存在,有就删除,没有不会报错,获取key没有的时候会返回null

import com.alibaba.fastjson.JSONObject;
import org.junit.jupiter.api.Test;import java.math.BigDecimal;public class TestJsonObjet1 {@Testpublic void testJsonObjet(){//新建JSONObject对象JSONObject object1 = new JSONObject();//1.在JSONObject对象中放入键值对object1.put("name", "张三");object1.put("name1", "张三1");object1.put("name2", "张三2");// 成功删除存在的key,返回key对应的valueObject name = object1.remove("name");// 通过key,value删除,返回结果是bolleanboolean remove = object1.remove("name1", "张三3");// 删除一个不存在的key返回结果是nullObject na3123me = object1.remove("na3123me");System.out.println(name);System.out.println(remove);System.out.println(na3123me);String string = object1.getString("3123");Object o = object1.get("3123");int intValue = object1.getIntValue("3123");BigDecimal bigDecimal = object1.getBigDecimal("3123");System.out.println(string);System.out.println(o);System.out.println(intValue);System.out.println(bigDecimal);System.out.println(object1);}
}

输出结果:

张三
false
null
null
null
0
null
{"name2":"张三2","name1":"张三1"}Process finished with exit code 0

5.对JSONObject的key和value(数字、字符串)进行封装为字符串

//新建JSONObject对象JSONObject object1 = new JSONObject();//1.在JSONObject对象中放入键值对object1.put("name", "张三");object1.put("name1", "张三1");object1.put("name2", "张三2");object1.put("age", 12);object1.put("money", 1200.00);Map<String, String> map = new HashMap<>();Iterator<Map.Entry<String, Object>> iterator = object1.entrySet().iterator();while(iterator.hasNext()){Map.Entry<String, Object> object = iterator.next();// 强制转换,会类型转换异常java.lang.ClassCastException
//            map.put(object.getKey(), (String) object.getValue());map.put(object.getKey(),  object.getValue()+"");}System.out.println(map);

结果:

{money=1200.01, name=张三, name2=张三2, name1=张三1, age=12}

Iterator<Entry<String,String>> iter=map.entrySet().iterator(); 是什么意思

http://www.xdnf.cn/news/11343.html

相关文章:

  • Process Explorer下载安装使用教程(图文教程)超详细
  • oracle数据库中的日期函数怎么用,oracle to_date时间函数使用详解
  • 前端gulp工具的使用方法及常用插件
  • IAR新建工程步骤(IAR Embedded Workbench for Renesas RH850)
  • RFC 简介
  • 各种常用不等式汇总
  • Redis、Memcache和MongoDB的区别
  • StarUML使用说明—用例图、时序图、活动图
  • MYSQL 存储过程详解
  • delphi2007、2010无法二次启动,报错 EditorLineEnds.ttr 另一个程序正在使用此文件
  • 出现java.lang.IllegalArgumentException异常处理
  • 屏幕截取招招看!教你十种屏幕抓取方法
  • 带通滤波器电路图大全(三款带通滤波器电路设计原理图详解)
  • 宝妈剪辑视频也养活了自己,辞职做自媒体一天3百,靠这5个网站
  • 计算机硬盘有坏道,电脑硬盘有坏道怎么办
  • marquee横向循环滚动
  • 125款程序员专属情人节表白网站【建议收藏】HTML+CSS+JavaScript
  • vscode下git的常见操作
  • Restorator 2007 Build 1729 汉化版
  • mac装载NTFS的u盘报错:com.apple.DiskManagement.disenter错误49223
  • LBS应用简介及值得关注的方向
  • C++ 内存池 -- C++ Memory Pool
  • 系统引导方式GRUB的详细介绍
  • C++利用 _findfirst与_findnext查找文件的方法
  • (一)UDP基本编程步骤
  • dz带模板跟全套插件 搭建一款属于自己的论坛
  • 开源免费的一个企业级商城系统
  • 林锐《高质量程序设计指南C/C++》笔记04:异常处理
  • C# Label显示多行文本及换行(WinForm/WebForm)
  • 计算机论文投稿指南