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 {
    @Test
    public void testJsonObjet(){
        //新建JSONObject对象
        JSONObject object1 = new JSONObject();

        //1.在JSONObject对象中放入键值对
        object1.put("name", "张三");
        object1.put("name1", "张三1");
        object1.put("name2", "张三2");

        //2.根据key获取value
        String 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,不包含返回false
        boolean isContainsKeyResult = object1.containsKey("name");
        System.out.println(isContainsKeyResult);

        //6.是否包含对应的value值,包含返回true,不包含返回false
        boolean 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;

    @Override
    public 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 {
    @Test
    public void testJsonObjet(){
        //新建JSONObject对象
        JSONObject object1 = new JSONObject();

        //1.在JSONObject对象中放入键值对
        object1.put("name", "张三");
        object1.put("name1", "张三1");
        object1.put("name2", "张三2");

        // 成功删除存在的key,返回key对应的value
        Object name = object1.remove("name");
        // 通过key,value删除,返回结果是bollean
        boolean remove = object1.remove("name1", "张三3");
        // 删除一个不存在的key返回结果是null
        Object 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(); 是什么意思

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: fastjson2的jsonobject.parseobject用法是将一个JSON字符串转换为JSONObject对象的方法,可以通过以下代码实现: String jsonString = "{\"name\":\"张三\",\"age\":20}"; JSONObject jsonObject = JSONObject.parseObject(jsonString); 其jsonString是待转换的JSON字符串,jsonObject是转换后得到的JSONObject对象。 ### 回答2: fastjson是一个使用简便且高性能的Java JSON库,它提供了JSONObject类来处理JSON对象。其JSONObject.parseObject()方法用于将JSON字符串转换为JSONObject对象。 JSONObject.parseObject()方法有多个重载形式,最常用的是接收两个参数的形式:JSONObject.parseObject(String text, Class<T> clazz)。其,text参数是要解析的JSON字符串,clazz参数是要转换为的目标对象的Class类型。 具体用法如下: 1. 首先,导入fastjson的包。 ```java import com.alibaba.fastjson.JSONObject; ``` 2. 使用JSONObject.parseObject()方法JSON字符串解析为JSONObject对象。 ```java String jsonString = "{\"name\":\"Alice\", \"age\": 25}"; JSONObject jsonObject = JSONObject.parseObject(jsonString); ``` 3. 若要将JSONObject对象转换为自定义的Java对象,可以将目标对象的Class类型作为第二个参数传入parseObject()方法。 ```java public class Person { private String name; private int age; // 省略构造函数、getter和setter等方法 @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } // 使用parseObject()方法JSONObject对象转换为自定义的Java对象 Person person = JSONObject.parseObject(jsonString, Person.class); ``` 通过以上步骤,我们可以使用fastjsonJSONObject.parseObject()方法JSON字符串解析为JSONObject对象,并且如果有需要,还可以将其转换为自定义的Java对象。 ### 回答3: Fastjson是一个使用方便且性能优异的Java JSON 解析库。而JSONObjectFastjson提供的一个用于解析JSON字符串的工具类。JSONObject.parseObject()方法是该工具类的一个静态方法,作用是将JSON字符串解析为Java对象。 使用JSONObject.parseObject()方法的步骤如下: 1. 首先,需要引入Fastjson的jar包,以便在代码使用Fastjson的相关类和方法。 2. 然后,可以调用JSONObject.parseObject()方法,并传入需要解析的JSON字符串和目标对象的类型。例如,假设有以下JSON字符串: ``` String jsonString = "{\"name\":\"Alice\", \"age\":20}"; ``` 可以使用以下代码将该JSON字符串解析为一个Java对象: ``` Person person = JSONObject.parseObject(jsonString, Person.class); ``` 这里的Person是一个自定义的Java类,它包含name和age这两个属性,并且对应的getter和setter方法也已经定义好。 3. 解析完成后,可以使用得到的person对象访问解析后的JSON数据。例如,可以通过person.getName()获取name属性的值。 需要注意的是,如果JSON字符串的键值对在Java对象没有对应的属性,Fastjson会忽略这些键值对。此外,如果JSON字符串的值的类型与Java对象对应属性的类型不一致,Fastjson会尝试进行类型转换。但是,如果类型转换失败,Fastjson会抛出一个异常。 总之,使用FastjsonJSONObject.parseObject()方法可以方便地将JSON字符串解析为Java对象,提供了快速、简便的JSON解析方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值