各种比较齐全的JSON解析方式大全

JSON学习总结

一、什么是JSON?

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。

二、JSON的数据结构

2.1 对象

对象是键值对的无序集合,以"{"开始,同时以"}"结束,键值对之间以":"相隔,不同的键值对之间以","相隔。

在这里插入图片描述

2.2 数组

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔;值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

在这里插入图片描述
在这里插入图片描述

三、JAVA后端解析JSON

3.1 Fastjson的使用

3.1.1 序列化
将javaBean对象转换为JSON字符串(也就是在前后端交互中要返回给前端人员的值)
//将List<Map<String,Object>>转化为[{},{},{}]类型的JSON字符串
String json = JSON.toJSONString(mapList);
//Map<String,Object>转化为{}类型的JSON字符串
String json = JSON.toJSONString(map);
//指定日期格式输出JSON字符串
String userJson = JSON.toJSONStringWithDateFormat(userList,"yyyy-MM-dd HH:mm:ss");
//指定日期格式并格式化转换
String userJson = JSON.toJSONStringWithDateFormat(userList,"yyyy-MM-dd HH:mm:ss",SerializerFeature.PrettyFormat);
3.1.2 反序列化
将JSON字符串转换为javaBean对象(也就是前端人员传过来需要我们解析并封装成javaBean的值)
//将userJson转换为User对象
User user1 = JSON.parseObject(userJson,User.classs);
//将[{},{}]类型的字符串转换为集合
List<User> users = JSON.parseArray(userListJson, User.class);
//多态
JSONArray array = JSON.parseArray(userListJson);
JSONObject object =JSON.parseObject(userJson);
3.1.3 JSON的子类
JSON的子类有JSONObject和JSONArray,JSONObject相当于Map<String,Object> ,JSONArray相当于List<Map<String,Object>>,子类重写了JSON类里面的方法。
3.1.4 自己封装的JSON工具类
package com.cetc.test;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;

import java.util.ArrayList;
import java.util.List;

public class ConvertJsonUtils {

    /**
     * 将java对象转换为json格式的字符串
     * @param object  带转换的对象
     * @return	json格式的字符串
     */
    public static String toJsonString(Object object){
        return JSONObject.toJSONString(object);
    }

    /**
     * 默认日期
     * @param object
     * @return
     */
    public static String toJsonWithDefaultDateFormatString(Object object){
        return toJsonWithDateString(object,"yyyy-MM-DD hh:mm:ss");
    }

    /**
     * 带有日期格式的json格式字符串转换
     * @param object
     * @param format
     * @return
     */
    public static String toJsonWithDateString(Object object,String format){
        return JSONObject.toJSONStringWithDateFormat(object,format, SerializerFeature.PrettyFormat);
    }

    /**
     * 将对象转换为json格式字符串(包括子类的,与toJsonString具体区别可以参考自定义菜单)
     * @param object
     * @return
     */
    public static String toJSONAndChildStr(Object object){
        return JSONObject.toJSON(object).toString();
    }

    /**
     * 将json格式的数据转换为java对象(不包括数组,集合类型)
     * @param <T>
     * @param jsonData	json格式的字符串
     * @param t			待转换成的java对象
     * @return
     */
    public static <T> T jsonToJavaObject(String jsonData,Class<T> t){
        return JSONObject.parseObject(jsonData, t);
    }

    /**
     * 将json格式的数据转换为java集合对象 ,List集合,map集合
     * @param jsonData	待转换的json格式的字符串
     * @param t			泛型集合对象
     * @return
     */
    public static <T> List<T> jsonToJavaList(String jsonData,Class<T> t){
        return JSONObject.parseArray(jsonData, t);
    }  
}

  • 3.2 Fastjson的使用
  • 3.3 Jackson的使用
  • 3.4 json-lib的使用

四、前端解析JSON

//将JSON字符串转化为JSON对象
	JSON.parse();
	eval("("+json字符串变量+")")
[]两者的区别是前者会检验JOSN格式是否正确,后者则不会

//将JSON对象转化为JSON字符串
	JSON.stringify(json对象)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值