Java中Json与Json格式字符串的解析、判断和转换

目录

一、Json的解析

1、JSONObject数据

1 格式

2 构造方式

3 常用方法

2、JSONOArray数据

1 格式

2 构造方式

3 常用方法

二、Json格式字符串

1、json字符串转java对象、list、map


一、Json的解析

1、JSONObject数据

JSONObject继承JSON,JSON中的方法在JSONObject中也存在,不用疑惑使用哪一个。

1 格式

{"key1":value,"key2",value,...},最外层必须为{},不能为[]

key必须是string,value可以是string,也可以是其他任意数据结构。

2 构造方式

1.创建空JSONObject,通过put()添加数据

import com.alibaba.fastjson.JSONObject;
public class demo {
    public static void main(String[] args) {
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("name","花");
        jsonObject1.put("age","23");
        System.out.println("jsonObject1=" + jsonObject1);
        System.out.println("jsonObject1-name=" + jsonObject1.get("name"));

    }
}

2.通过map生成JSONObject

import com.alibaba.fastjson.JSONObject;
import java.util.HashMap;

public class demo {
    public static void main(String[] args) {
        //通过map生成JSONObject
        HashMap<String, Object> map = new HashMap<>();
        map.put("name", "雨");
        map.put("age", 23);
        JSONObject jsonObject1 = new JSONObject(map);
        System.out.println("jsonObject2-name=" + jsonObject1.get("name"));
    }
}

3.通过实体生成

import com.alibaba.fastjson.JSONObject;

public class demo {
    public static void main(String[] args) {
        TestClass testClass = new TestClass();
        testClass.setAge("23");
        testClass.setName("竹");
        //生成json格式
        JSONObject json1 = (JSONObject) JSON.toJSON(testClass);
        JSONObject json2 = (JSONObject) JSONObject.toJSON(testClass);
        System.out.println(json1.get("name")+"----------"+ json2.get("name"));
    }
}

4.由json格式字符串生成(字符串格式不符合标准会报错,例如json数组格式字符串)

import com.alibaba.fastjson.JSONObject;

public class demo {
    public static void main(String[] args) {
        String testString = "{\"age\":23,\"name\":\"石\"}";
        //如果字符串格式不符合标准,会报错
        JSONObject jsonObject3 = JSONObject.parseObject(testString);
        System.out.println(jsonObject3);
    }
}

3 常用方法

方法传参返回数据类型用途

put(String key, Object value)
put(String key, JSONObject value)

key,valueboolean增加属性
toString()String转为字符串
getJSONArray(String key)keyJSONArray获取JSONArray 数组
JSONObject getJSONObject(String key)keyJSONObject获取JSONObject数组
isEmpty(String key)keyboolean判断属性存在且不为空
JSONObject.parseObject(String str)json格式字符串JSONObject字符串转JSONObject(字符串格式不对会报错,可以用来判断字符串是否符合json格式
JSONObject.parseArray(String str)json列表格式字符串JSONArray字符串转JSONArray(字符串格式不对会报错,可以用来判断字符串是否符合json列表格式
JSONObject.parseArray(String str, User.class)json列表格式字符串、java类Java实体类字符串转java对象
JSONObject.toJSONString()list、map或实体类String将map,list数据转为json格式字符串
JSONObject.parse()Json格式或Json数组格式字符串Object将Json格式或Json数组格式字符串转化为Object,可以用来判断字符串格式是否为json或json数组
JSONObject.toJavaObject(jsonOBj,User.class);
 
JSON对象和Java类Java实体类以json字符串生成java对象

2、JSONOArray数据

1 格式

[{"key":value},{"key":value},{"key":value},...]

本质是数组

2 构造方式

1.创建空JSONArray,通过add()添加数据

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class demo {
    public static void main(String[] args) {
        JSONArray jsonArray = new JSONArray();
        JSONObject jsonObject1 = new JSONObject();
        jsonObject1.put("name", "花");
        JSONObject jsonObject2 = new JSONObject();
        jsonObject2.put("name", "雨");
        jsonArray.add(jsonObject1);
        jsonArray.add(jsonObject2);
        System.out.println(jsonArray);
    }
}

2.对象列表转为JSONArray

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.ArrayList;

public class demo {
    public static void main(String[] args) {
        ArrayList<TestClass> testList = new ArrayList<>();
        TestClass testClass1 = new TestClass();
        testClass1.setAge("20");
        testClass1.setName("花");
        testList.add(testClass1);

        TestClass testClass2 = new TestClass();
        testClass2.setAge("20");
        testClass2.setName("竹");
        testList.add(testClass2);

        //list转json字符串
        String string = JSONObject.toJSON(testList).toString();
        System.out.println(string);

        //json字符串转listJson格式
        JSONArray jsonArray = JSONObject.parseArray(string);

        System.out.println(jsonArray);
    }
}

3.JSONArray格式字符串转为JSONArray

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class demo {
    public static void main(String[] args) {
        String string = "[{\"name\":\"花\"},{\"name\":\"雨\"}]";
        JSONArray jsonArray = JSONObject.parseArray(string);
        System.out.println(jsonArray);
    }
}

3 常用方法

传参返回数据类型用途

add()

addAll()

Object、集合boolean添加数据
JSONArray.parseObject(String str)json格式字符串JSONObject字符串转JSONObject(字符串格式不对会报错,可以用来判断字符串是否符合json格式
JSONArray.parseArray(String str)json列表格式字符串JSONArray字符串转JSONArray(字符串格式不对会报错,可以用来判断字符串是否符合json列表格式
JSONArray.parse()Json格式或Json数组格式字符串Object将Json格式或Json数组格式字符串转化为Object,可以用来判断字符串格式是否为json或json数组
JSONArray.toJavaObject(jsonArray,UserList.class);
 
json字符串和Java列表类Java列表对象以json字符串生成java对象

二、Json格式字符串

1、json字符串转java对象、list、map

 1.json字符串转java对象

User user = JSONObject.parseObject(jsonStr, User.class);

2.json字符串转list对象 

List<TestClass> testClasses = JSONObject.parseArray(jsonStr, TestClass.class);

3.json字符串转map对象  

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.util.Map;

public class demo {
    public static void main(String[] args) {
        String str = "{\"name\":\"雨\",\"age\":\"20\"}";
        //第一种方式
        Map maps = (Map) JSON.parse(str);
        //第二种方式
        Map mapTypes = JSON.parseObject(str);
        //第三种方式
        Map mapType = JSON.parseObject(str,Map.class);
        //第四种方式
        Map json = (Map) JSONObject.parse(str);
        //第种五方式
        Map mapObj = JSONObject.parseObject(str,Map.class);
        System.out.println(json);
    }
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java解析JSON字符串可以使用JSON库,例如Jackson、Gson、FastJSON等。这里以使用Jackson库为例,介绍如何解析JSON字符串。 假设有以下JSON字符串: ``` { "name": "Tom", "age": 25, "email": "[email protected]", "address": { "city": "Beijing", "country": "China" }, "hobbies": ["reading", "swimming", "traveling"] } ``` 我们可以使用以下代码将其解析Java对象: ```java import com.fasterxml.jackson.databind.ObjectMapper; public class Main { public static void main(String[] args) throws Exception { String jsonString = "{\n" + " \"name\": \"Tom\",\n" + " \"age\": 25,\n" + " \"email\": \"[email protected]\",\n" + " \"address\": {\n" + " \"city\": \"Beijing\",\n" + " \"country\": \"China\"\n" + " },\n" + " \"hobbies\": [\"reading\", \"swimming\", \"traveling\"]\n" + "}"; ObjectMapper objectMapper = new ObjectMapper(); Person person = objectMapper.readValue(jsonString, Person.class); System.out.println(person); } } class Person { private String name; private int age; private String email; private Address address; private String[] hobbies; // 省略 getter 和 setter 方法 @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", email='" + email + '\'' + ", address=" + address + ", hobbies=" + Arrays.toString(hobbies) + '}'; } } class Address { private String city; private String country; // 省略 getter 和 setter 方法 @Override public String toString() { return "Address{" + "city='" + city + '\'' + ", country='" + country + '\'' + '}'; } } ``` 在上面的代码,我们使用Jackson库的ObjectMapper类将JSON字符串解析Java对象。在Person类定义了与JSON字符串对应的字段,而Address类则是Person类的一个成员变量。 可以看到,使用Jackson库解析JSON字符串非常方便,只需要将JSON字符串和对应的Java类传入ObjectMapper的readValue方法即可。同时,Jackson库也支持将Java对象转换JSON字符串,具体操作可以查阅Jackson库的文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值