标签 JAVA 下的文章

IntelliJ IDEA Maven快速查询添加依赖

最近在学习Spring 框架过程中,由于笔者本人使用的一直是JDK11版本

使用过程中 出现了javax.annotation.Generated报错情况

查询后得知 jdk11及其以上移除了该包,可以使用Jar替代

在查询Maven 添加依赖的过程中 发现了以下方法

在pom.xml 页面 右键->Generate (快捷键 Alt + Insert)

image-20210511085256659

image-20210511085326427

image-20210511085604975

在此窗口 可直接查询 以javax.annotation为例

image-20210511085705309

image-20210511085751004

左键下拉可直接选择选版本

ADD之后 直接V(Maven)一键添加a

Fastjson--拼接复杂嵌套Json

后端向前端需要返回一个如下格式的json格式数据
{
    "status":"200",
    "message":"登录成功",
    "user-info":{
        "username":"student"
        "identity":"3",
        "password":"123456",
        "class-id":"1"
    }
}
这是我最近在写的一个项目的后端的LoginServlet的返回数据

起初返回的数据为

{
    "status":"200",
    "message":"登录成功",
    "username":"student"
    "identity":"3",
    "password":"123456",
    "class-id":"1"
}

后面在前端获得数据的时候,想将user-info内部的信息改为获取如上

原本方法为通过Hashmap类实例化一个map对象,添加数据后,通过fastjson框架直接转换为Json数据

原代码
        HashMap<String, String> BackData = new HashMap<String, String>();
        BackData.put("status", "201");
        BackData.put("message", "登陆成功");
        BackData.put("name", s1.getStudent_Name());
        BackData.put("identity", "3");
        BackData.put("class", s1.getClass_ID());
        BackData.put("number", s1.getStudent_Number());
        BackData.put("password", s1.getStudent_Password());

起初的想法是很天真美好的将数据先存入一个map中转为JsonString

然后添加到原来的map中测试后发现转义的问题!

image-20210417015731678

后查询文章后发现FastJson有两大主要类 JSONObject(表示Json对象)与JSONArray(表示Json数据组)

我们来复习一下JSON对象与JSON数组:
//JSON对象 在大括号 {} 中书写:
{key1 : value1, key2 : value2, ... keyN : valueN }
//JSON数组 在中括号 [] 中书写:
[
    { key1 : value1-1 , key2:value1-2 }, 
    { key1 : value2-1 , key2:value2-2 }, 
    { key1 : value3-1 , key2:value3-2 }, 
    ...
    { keyN : valueN-1 , keyN:valueN-2 }, 
]

JSON数组只能添加{}的元素而不能直接添加键值对

于是在JSONArray中只有add()方法来添加Object类型对象

而JSONObject是一个对象,不能容纳/添加其他对象只有put()方法来添加键值对。

有意思的是JSONObect的put(String key,Object value) value也正好能是JSONArray类型

正确代码
    JSONArray UserInfo = new JSONArray();
    UserInfo.add(s1);     //FastJson会自动将实体类自动转为json对象
    jsonObject.put("code",200);
    jsonObject.put("message","查询成功");
    jsonObject.put("user-info",UserInfo);

    //发送 biu!
    response.getWriter().print(jsonObject.toJSONString());
    response.getWriter().flush();
成功截图:

image-20210417014355171

写代码的一点小插曲/(ㄒoㄒ)/~~

JSONArray与JsonArray

image-20210417014229124

总结

大概是对JSON数据格式使用还是太少

后面大概要从头补习 计算机网络 数据结构 计算机组成原理了吧。。。。。。。

参考文章:

https://www.cnblogs.com/gocode/p/parse-key_value-without-entity-and-concat-nested-json-by-fastjson.html