JSON一文通透,Java、JS与JSON互转

x33g5p2x  于2021-10-14 转载在 Java  
字(2.6k)|赞(0)|评价(0)|浏览(365)

参看:

  • 视频:https://www.bilibili.com/video/BV1Pt411u7R3
  • 菜鸟教程:https://www.runoob.com/json/json-tutorial.html

一、JSON介绍

(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率(HTTP协传输文本信息)。

JSON常用于前后端交互数据和数据存储,XML常用于配置环境。

JavaScript成为浏览器上事实上的标准语言,这与JSON 的流行也有密切的关系。

1.语法规则

JSON 的语法规则十分简单,优雅完美,总结起来有:

  • 数组(Array)用方括号([])表示(数组里存放多个对象)。
  • 对象(0bject)用大括号({})表示。
  • 名称/值对(name/value)组合成数组和对象。
  • 名称(name)置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组。
  • 并列的数据之间用逗号(,)分隔。

数据示例:

{
    "name":"zhangsan",
    "age":21,
    "parents":[
        {
            "role":"father",
            "name":"wanger",
            "age":50
        }
        ,{
            "role":"mother",
            "name":"mazi",
            "age":50
        }
    ]
}

2.Google浏览器插件

FeHelper开发者工具

建议装上这个JSON插件,浏览器会自动识别json数据,自动格式化,它功能非常强大。

同时,它还支持诸多功能(工具截图):

极大的方便了开发人员。

二、Java对象和JSON互转

1.Java对象转化为JSON

1.1使用Java类库

com.fasterxml.jackson.databind.ObjectMapper

Map<String,String> map = new HashMap<>();
for (int i = 0; i < 5; i++) {
    map.put(i*2+"key",i*i+"val");
}

// 使用java类库 throws JsonProcessingException
String json2 = new ObjectMapper().writeValueAsString(map);
System.out.println(json2);

1.2使用fastjson

需要借助这一个依赖包,不知道版本选多少合适,就去maven官网查看一下,【点击我跳转到maven官网】如果不使用maven开发,直接在maven官网下载jar包导入也是可以的,当然不推荐这样做。

导入依赖

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.78</version>
</dependency>

示例

Map<String,String> map = new HashMap<>();
for (int i = 0; i < 5; i++) {
    map.put(i*2+"key",i*i+"val");
}
// 测试 Java对象转换为json
String josn1 = JSON.toJSONString(map);
System.out.println(josn1);

2.JSON转化为Java对象

这里为了方便,只提供了fastjson类库中把JSON转化为Java对象的方法

JSONObject jsonObject = JSONObject.parseObject(json);

3.封装JSONUtils工具类(重点)

封装好此工具类后,直接调用即可

public class JSONUtils {

    /** * 通过fastjson 把obj转化为json格式数据 * @param obj * @return */
    public static String toJSON(Object obj){
        String json = JSON.toJSONString(obj);
        return json;
    }
    
    /** * 通过fastjson 把json转化为object格式数据 * @param json * @return */
    public static Object JsonToObject(String json){
        JSONObject jsonObject = JSONObject.parseObject(json);
        return jsonObject;
    }
}

三、JS对象和JSON互转

作为一个后端开发人员,不可避免的会涉及到JS对象与JSON数据的互转,下面就提供一些简单的数据互转。
JS对象是JavaScript语言封装的数据,JSON是纯字符串。

1.JSON转JS对象

格式:JSON.parse(test[,reviver]),示例:

var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');

2.JS对象转JSON

格式:JSON.stringify(value[, replacer[, space]]),示例:

var json = JSON.stringify('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');

相关文章